酷代码 AI
菜单
服务商

P1020小核桃与删除字符串 普及+/提高 CSP-J组 双指针 二分答案 标准IO 传统题 来源 TomAnderson 时间限制 1000ms 内存限制 256MB 通过/尝试次数 1481/2524 题目描述 给一个长度为 n n 的 01 01 字符串,你可以任意选择下面两个操作任意次: 从左往右删除任意长度连续段 从右往左删除任意长度连续段 现在要求 m a x ( 删掉的 1 , 剩下的 0 ) max(删掉的1,剩下的0) 最小。 输入描述 输入一行只包含 01 01 的字符串。 输出描述 输出一个整数,表示答案。 input1 复制 1001001001001 output1 复制 3 input2 复制 111011001000 output2 复制 1用C++

```cpp #include <iostream> #include <string> #include <algorithm> #include <climits> using namespace std; int main() { string s; cin >> s; int n = s.length(); int minValue = INT_MAX; // 枚举所有可能的左右删除情况 for (int left = 0; left <= n; ++left) { for (int right = 0; right <= n - left; ++right) { int deletedOnes = 0; int remainingZeros = 0; // 计算删除的1的数量 for (int i = 0; i < left; ++i) { if (s[i] == '1') { ++deletedOnes; } } for (int i = n - right; i < n; ++i) { if (s[i] == '1') { ++deletedOnes; } } // 计算剩下的0的数量 for (int i = left; i < n - right; ++i) { if (s[i] == '0') { ++remainingZeros; } } // 更新最小值 minValue = min(minValue, max(deletedOnes, remainingZeros)); } } cout << minValue << endl; return 0; } ``` [2026-02-07 18:40:10 | AI问答 | 330点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多