多题目

CSP2020J 阅读程序题3 

#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题 判断

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

A.
正确
B.
错误

第2题 判断

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

A.
正确
B.
错误

第3题 判断

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

A.
正确
B.
错误

第4题 单选

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

A.

1917

B.

1908

C.

1881

D.

1890

第5题 单选

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

A.

2020

B.

2030

C.

2010

D.

2000

第6题 单选

若输入的n为15,接下来的输入是15到1,以及15到1,则输出为()。

A.

2420

B.

2220

C.

2440

D.

2240

发表评论

登录 后再回复