#55. 枚举算法第三题(NOIP2017)

枚举算法第三题(NOIP2017)

第三题(NOIP2017)

#include<iostream>
using namespace std;

int main() {
    string ch;
    int a[200], b[200];
    int n, i, t, res;
    cin >> ch;
    n = ch.length();
    for (i = 0; i < 200; i++)
        b[i] = 0;
    for (i = 1; i <= n; i++) {
        a[i] = ch[i-1] - '0';
        b[i] = b[i-1] + a[i];
    }
    res = b[n];
    t = 0;
    for (i = n; i > 0; i--) {
        if (a[i] == 0)
            t++;
        if (b[i-1] + t < res)
            res = b[i-1] + t;
    }
    cout << res << endl;
    return 0;
}
  1. 【判断题】输入的字符串长度必须小于等于200,否则可能会出现运行时错误。 {{ select(1) }}
  • 正确
  • 错误
  1. 【判断题】若输入字符串为1001101010100110110011,则会输出12。 {{ select(2) }}
  • 正确
  • 错误
  1. 【判断题】去掉第10行和第11行,程序一定可以正常运行。 {{ select(3) }}
  • 正确
  • 错误
  1. 【判断题】输入的字符串必须由01字符组成。 {{ select(4) }}
  • 正确
  • 错误
  1. 【选择题】程序的时间复杂度为( )。 {{ select(5) }}
  • O(1)
  • O(nlogn)
  • O(n)
  • O(n²)
  1. 【选择题】若输入1010405010401090109080100,输出为( )。 {{ select(6) }}
  • 0
  • 5
  • 26
  • 13