From f5c4e22affd483afddf8825b22f20f2336bf49d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Mon, 11 Mar 2024 11:29:05 +0800 Subject: [PATCH] 'commit' --- .../ZhongGaoJi/LanQiao15STEMA202401/6.cpp | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp index 7bd4e0b..a3608f2 100644 --- a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp @@ -5,6 +5,20 @@ using namespace std; 2 3 4 5 2 答案:4 +算法: +1、开a[N]数组,记录目标密码锁的密码,本例就是 a[]={ 2 , 3 , 4 , 5 , 2} + +2、模拟我们从{0,0,0,0,0}出发,看看是不是到达了目标状态 + +3、如果还没有到达目标状态,我们来研究一下,怎么能尽快的向目标逼近 + +(1)出现次数最多的数字,起始,终止 +(2)如果有个次数一样多的数字,那么起始终止范围大的在前 +(3)如果不存在范围包含关系,那么号小的在前(其实是随意的) +本例 就是找到了2。标记 use[2]=1,表示2已处理 res++。 + + + 5 3 2 4 2 5 答案:4 @@ -76,11 +90,7 @@ int main() { sort(q.begin(), q.end()); // 最多的数字是num,个数=count,这个是最牛X的 - int num = q[0].second; - // 找出这个数字的起止位置 - - for (int i = 0; i < q.size(); i++) - if ((int)s[i] == num) s[i] = '0'; + for (int i = q[0].st; i <= q[0].ed; i++) s[i] = q[0].c; } // 输出一共处理了几次 cout << res << endl;