不是VIP会员,不能显示答案

题目解答

题目:
#include <algorithm>

#include <iostream>

using namespace std;



int n;

int d[50][2];

int ans;



void dfs(int n, int sum) {

if (n==1) {

ans = max(sum, ans);

return;

}

for(int i=1; i<n; ++i) {

int a=d[i-1][0],b=d[i-1][1];

int x = d[i][0], y = d[i][1];

d[i-1][0]=a+x;

d[i-1][1]=b+y;

for(int j=i; j<n-1; ++j)

d[j][0] = d[j + 1][0], d[j][1] = d[j + 1][1];

int s=a+x+ abs(b - y);

dfs(n - 1, sum + s);

for(int j=n-1; j>i; --j)

d[j][0] = d[j - 1][0], d[j][1] = d[j - 1][1];

d[i-1][0]=a,d[i-1][1]=b;

d[i][0] = x, d[i][1] = y;

}

}



int main() {

cin >> n;

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

cin >> d[i][0];

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

cin >> d[i][1];

ans = 0;

dfs(n, 0);

cout << ans << endl;

return 0;

}





假设输入的n是不超过50的正整数,d[i][0]、d[i][1]都是不超过10000的正整数,完成下面的判断题和单选题:

判断题

1) 若输入n为0,此程序可能会死循环或发生运行错误。( )

2) 若输入n为20,接下来的输入全为0,则输出为0。( )

3) 输出的数一定不小于输入的d[i][0]和d[i][1]的任意一个。 ( )


选择题

4) 若输入的n为20,接下来的输入是20个9和20个0,则输出为()。

5) 若输入的n为30,接下来的输入是30个0和30个5,则输出为()。

6) (4分)若输入的n为15,接下来的输入是15到1,以及15到1,则输出为()。
考点:
分析:
解答:
评论:
老师: