方法一:由肉眼观察找到在一至五号位的不同编号成员的最大的值
- #include
- using namespace std;
- int main()
- {
- cout << 98 + 99 + 98 + 97 + 98;
- return 0;
- }
方法二:由dfs一一找寻
- #include
- using namespace std;
- const int N = 2e4 + 10;
- int ans, a[N][N], v[N];
- void dfs(int num, int sum)
- {
- if(num > 5)
- {
- ans = max(ans, sum);
- //cout << ans << '\n';
- return;
- }
- for(int i = 1; i <= 20; i ++)
- {
- if(v[i] == 0)
- {
- v[i] = 1;
- dfs(num + 1, sum + a[i][num]);
- v[i] = 0;
- }
- }
- }
- int main()
- {
- for(int i = 1; i <= 20; i ++)
- {
- for(int j = 1; j <= 5; j ++)
- {
- cin >> a[i][j];
- }
- }
- dfs(0, 0);//从第一个位置开始,现在的分数为0
- cout << ans;
- return 0;
- }
- /*
- 97 90 0 0 0
- 92 85 96 0 0
- 0 0 0 0 93
- 0 0 0 80 86
- 89 83 97 0 0
- 82 86 0 0 0
- 0 0 0 87 90
- 0 97 96 0 0
- 0 0 89 0 0
- 95 99 0 0 0
- 0 0 96 97 0
- 0 0 0 93 98
- 94 91 0 0 0
- 0 83 87 0 0
- 0 0 98 97 98
- 0 0 0 93 86
- 98 83 99 98 81
- 93 87 92 96 98
- 0 0 0 89 92
- 0 99 96 95 81*/