diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp index f4d46c6..a994628 100644 --- a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp @@ -1,30 +1,65 @@ #include using namespace std; +int res; // 一共处理几次 +// 是不是全是字符零 +bool isAllZero(string s) { + for (int i = 0; i < s.size(); i++) + if (s[i] != '0') return false; + return true; +} -/* -测试用例: -5 -12321 - -*/ -int cnt = 1; +// 结构体 +struct Node { + int c; + int count; + int st, ed; + bool const operator<(const &Node t) { + if (count != t.count) return count > t.count; + if (st < t.st && ed > t.ed) return false; + return true; + } +}; -// 递归写法 -void dfs(string s) { - int p; - for (p = s.size() - 1; p >= 1; p--) - if (s[0] != s[p]) break; +int p1[10], p2[10]; - string t; - for (int i = 1; i <= p; i++) t += s[i]; - if (t.size()) cnt++, dfs(t); -} +vector a; int main() { - int n; - string s; + int n; // n个长度的字符串 + string s; // 字符串 cin >> n >> s; - dfs(s); - cout << cnt << endl; + + // 多次循环,判断是不是已经全是'0'的字符串,如果不是,则继续处理 + while (!isAllZero(s)) { + // 记录有多少个非0数字,都是多少个 + memset(b, 0, sizeof b); + memset(p1, -1, sizeof p1); + memset(p2, -1, sizeof p2); + + for (int i = 0; i < s.size(); i++) { + if (s[i] != '0') { + b[s[i] - '0']++; + if (p1[s[i] - '0'] == -1) + p1[s[i] - '0'] = i; // 记录起点 + else + p2[s[i] - '0'] = i; // 记录终点 + } + } + + // 整理一下 + vector q; + for (int i = 1; i <= 9; i++) + if (b[i]) q.push_back({i, b[i], p1[i], p2[i] == -1 ? p1[i] : p2[i]}); // 几个在前,是啥数字在后 + 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'; + } + // 输出一共处理了几次 + cout << res << endl; return 0; -} \ No newline at end of file +} diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.jpg b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.jpg new file mode 100644 index 0000000..00f994d Binary files /dev/null and b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.jpg differ diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/密码锁.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/密码锁.cpp deleted file mode 100644 index dbaa17d..0000000 --- a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/密码锁.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include -using namespace std; - -bool isAllZero(string s) { - for (int i = 0; i < s.size(); i++) - if (s[i] != '0') - return false; - return true; -} - -struct Node { - char c; //ַ - int count;// - int st, ed;//ʼλãֹͣλ - bool const operator<(const &Node t) { - // ȣôǰ - if (count != t.count) - return count > t.count; - // ȣDzǴ - if (st < t.st && ed > t.ed)//ṹԱȣһڶôһǰڶǰ - return false; - //Ĭֵǵڶǰ - return true; - } -}; - -int b[10]; - -void tj() { - memset(b, 0, sizeof b); - vector> q; - for (int i = 0; i < s.size(); i++) { - if (s[i] != '0') - b[s[i] - '0']++; - } - for (int i = 1; i <= 9; i++) - if (b[i]) - q.push_back({ b[i], i}); - sort(q.begin(), q.end()); - - for (int i = 0; i < q.size(); i++) - //TODOûм¼ֹλãҪʵ - } - - -vector a; - - -int main() { - int n; - string s; - cin >> n >> s; - - while (!isAllZero(s)) { - - } - return 0; -}