#CS40303. 阅读程序3-枚举算法3

阅读程序

注意:切勿用电脑直接运行代码得出答案,请用大脑+笔+纸运行代码答题,否则是在浪费你的时间。

第3节:枚举算法

第3题【NOIP】2017

#include<iostream>
using namespace std;
int main(){
    string ch;
    int a[200];
    int b[200];
    int n, i, t, res;
    cin >> ch;
    n = ch.length();
10  for (i = 0; i < 200; i++)
11      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,否则可能会出现运行时错误。

(2)若输入字符串为1001101011001101101011110001,则会输出12。

(3)去掉第10行和第11行,程序一定可以正常运行。

(4)输入的字符串必须由01字符组成。

●选择题

(5)程序的时间复杂度为( )。

(6)若输人1010405010401090109080100,输出为()。