组合题

#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是不超过5。的正整数,d[i][0], d[i][l]都是不超过 10000的正整数,完成下面的判断题和单选题:

第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

赣ICP备20007335号-2