本问题涉及组合,需要考虑的是对每个球队进行分组,然后计算两两组合的得分。由于球队的数量较少(小于等于20),可以使用枚举法,即对每个球队进行分组并计算得分,最后选出得分最高的组合即可。代码示例如下:
#include
using namespace std;
const int INF = 1e9;
int n, ans = -INF;
int score[25][25];
int main() {
cin >> n;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
cin >> score[i][j];
for(int i=0; i<(1< team1, team2;
for(int j=1; j<=n; j++) {
if(i & (1<<(j-1))) team1.push_back(j); // 将球队放入team1中
else team2.push_back(j); // 将球队放入team2中
}
int totalScore = 0;
for(int j=0; j