#include <iostream> using namespace std; int team[20][6]; int max_sum; bool st[20]; int max(int a, int b) { return a > b ? a : b; } void dfs(int u, int sum) //u当前选择团队的第几人,sum当前团队总值 { if (u > 5) { max_sum = max(max_sum, sum); return; } //如果选完了,更新最大值,退出 for (int i = 0; i < 20; i++) //20人 { if (!st[i]) //如果当前人没有被选择 { st[i] = true; //被选 dfs(u + 1, sum + team[i][u]); //选下一个人,队伍总值增加当前人的当前号位的值 st[i] = false; //回溯 } } } int main() { for (int i = 0; i < 20; i++) for (int j = 0; j < 6; j++) cin >> team[i][j]; //读队伍 dfs(1, 0); //从第一个人开始选,当前总和为0 cout << max_sum; return 0; }