按照题解的思路写的,交上去40分,照着题解改了下但还是40......求大佬给看看
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int s, n, m;//对手人数、城堡数、士兵数
int a[101][101];//a[i][j]表示对于第i座城堡,出兵数量第j小的人出的士兵数量
int dp[10001];//已出兵数量
int ans;
int maxx(int x, int y){
return x > y ? x : y;
}
int main(){
cin >> s >> n >> m;
for(int i = 1; i <= s; ++i){
for(int j = 1; j <= n; ++j){
cin >> a[j][i];
}
}
for(int i = 1; i <= n; ++i){
sort(a[i]+1, a[i]+1+s);
}
for(int i = 1; i <= n; ++i){
for(int j = m; j >= 0; --j){
for(int k = 1; k <= s; ++k){
if(j > a[i][k] * 2){
dp[j] = maxx(dp[j - a[i][k] * 2 - 1] + k * i, dp[j]);
}
}
}
}
for(int i = 0; i <= m; ++i){
ans = maxx(ans, dp[i]);
}
cout << ans << endl;
return 0;
}