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) 若输入n为0,此程序可能会死循环或发生运行错误。( )
若输入n为20,接下来的输入全为0,则输出为0。( )
输出的数一定不小于输入的d[i][0]和d[i][1]的任意一个。 ( )
若输入的n为20,接下来的输入是20个9和20个0,则输出为()。
1917
1908
1881
1890
若输入的n为30,接下来的输入是30个0和30个5,则输出为()。
2020
2030
2010
2000
若输入的n为15,接下来的输入是15到1,以及15到1,则输出为()。
2420
2220
2440
2240
发表评论