判断题

阅读程序(3)

13-18题   组合题

#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;

}

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

A

正确

B

错误

赣ICP备20007335号-2