不理解您的` a[i][j]=x-j;`
我把这个改成了`a[i][j]=x;`,之后$ j $从0开始循环。
```
if(f[i][j]<f[i-1][k]+a[i][j])
```
改为
```
if(f[i][j]<=f[i-1][k]+a[i][j])
```
by bzzltl @ 2023-01-31 09:10:13
@[j1368](/user/542799) .
by bzzltl @ 2023-01-31 09:10:25
@[j1368](/user/542799) 奥,我解释的不清楚,错误其实就这些,具体看代码吧
```
#include<bits/stdc++.h>
using namespace std;
int a[20][20],f[20][20],ans[20][20][20];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
int x;
cin>>x;
a[i][j]=x;
}
for(int i=1;i<=n;i++)
for(int j=0;j<=m;j++)
for(int k=0;k<=j;k++)
if(f[i][j]<=f[i-1][j-k]+a[i][k])
{
f[i][j]=f[i-1][j-k]+a[i][k];
for(int w=1;w<=i-1;w++)ans[i][j][w]=ans[i-1][j-k][w];
ans[i][j][i]=k;
}
cout<<f[n][m]<<endl;
for(int i=1;i<=n;i++)cout<<i<<" "<<ans[n][m][i]<<endl;
}
```
by bzzltl @ 2023-01-31 09:29:23
@[bzzltl](/user/699852) 谢谢大佬,90分了
by j1368 @ 2023-01-31 09:29:35
@[bzzltl](/user/699852) AC了,感谢
by j1368 @ 2023-01-31 09:30:49