Problem C: 阅读程序-3

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:159 Solved:16

Description

#include <iostream>

using namespace std;

const int maxn = 10000;

int n;

int a[maxn];

int b[maxn];

int f(int l, int r, int depth) {

    if (l > r)

        return 0;

    int min = maxn, mink;

    for (int i = l; i <= r; ++i) {

        if (min > a[i]) {

            min = a[i];

            mink = i;

        }

    }

       int lres = f(l, mink - 1, depth + 1);

    int rres = f(mink + 1, r, depth + 1);

    return lres + rres + depth * b[mink];

}

int main() {

    cin >> n;

    for (int i = 0; i < n; ++i)

        cin >> a[i];

    for (int i = 0; i < n; ++i)

        cin >> b[i];

    cout << f(0, n - 1, 1) << endl;

    return 0;

}



1)如果a数组有重复的数字,则程序运行时会发生错误。()

2)如果b数组全为0,则输出为0。()


3)当n=100时,最坏情况下,与第12行的比较运算执行的次数最接近的是:()。


     A. 5000  B. 600  C. 6  D. 100

4)当n=100时,最好情况下,与第12行的比较运算执行的次数最接近的是:()。


     A. 100   B. 6   C. 5000   D. 600

5)当n=10时,若b数组满足,对任意0<=i<n,都有b[i] = i + 1,那么输出最大为()。


     A. 386   B. 383   C. 384   D. 385

6)当n=100时,若b数组满足,对任意0 S i < 71,都有bi=1,那么输出最小为()。

     A. 582   B. 580   C. 579   D. 581




Input

输入一个整数n,为题号(1<=n<=6)

Output

输出题目答案,对于判断题,正确的输出字符√,如果错误,输出大写字母X。
对于选择题,输出选项,大写字母。

HINT

示例程序如下:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n; cin>>n;
switch(n) {
case 1: cout<<"√"<<endl; break;
case 2: cout<<"X"<<endl; break;
case 3: cout<<"C"<<endl; break;
case 4: cout<<"B"<<endl; break;
case 5: cout<<"
A"<<endl; break;
case 6: cout<<"D"<<endl; break;
}
return 0;
}