1472: 阅读程序-6
Description
#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][0] = 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 = 0; 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的正整数,完成下面的判断题和单选题:
l 判断题
1)
若输入n为0,此程序可能会死循环或发生运行错误。( )
2)
若输入n为20,接下来的输入权威0,则输出为0。 ( )
3)
输出的数一定不小于输入的d[i][0]和d[i][1]的任意一个。 ( )
l 单选题
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)
(4分)若输入的n为15,接下来的输入时15到1,以及15到1,则输出为( )。
A. 2420
B. 2220
C. 2440
D. 2240
Input
Output
Sample Input Copy
1
Sample Output Copy
X
HINT
#include<bits/stdc++.h>
using namespace std;
int main() {
int n; cin>>n;
switch(n) {
case 1: cout<<"V"<<endl; break;
case 2: cout<<"X"<<endl; break;
case 3: cout<<"X"<<endl; break;
case 4: cout<<"X"<<endl; break;
case 5: cout<<"A"<<endl; break;
case 6: cout<<"D"<<endl; break;
}
return 0;
}