题目:

代码求调:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
int x[50],s;
};
int n,m,ans;
node a[105];
int k[105];
bool cmp(node a,node b){
return a.s>b.s;
}
int read(){
int f=1,x=0;
char ss=getchar();
while(ss<'0'||ss>'9'){if(ss=='-')f=-1;ss=getchar();}
while(ss>='0'&&ss<='9'){x=x*10+ss-'0';ss=getchar();}
return f*x;
}
void dfs(int r,int s){
ans=max(ans,s);
if(r>n) return;
for(int i=1;i<=m;i++){
if(k[i]<2){
k[i]++;
dfs(r+1,s+a[r].x[i]);
k[i]--;
}
for(int j=1;j<=m;j++){
if(i==j) continue;
if(k[i]<2&&k[j]<2){
k[i]++;
k[j]++;
dfs(r+1,s+a[r].x[i]+a[r].x[j]);
k[i]--;
k[j]--;
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
a[i].s=0;
for(int j=1;j<=m;j++){
a[i].x[j]=read();
a[i].s+=a[i].x[j];
}
}
//sort(a+1,a+n+1,cmp);
dfs(1,0);
cout<<ans;
return 0;
}