2215 . 综合题

阅读程序【CSP 2020 入门级第一轮】

#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 = 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$ 的正整数,完成下面的判断题和单选题:

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 . (单选题)

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