1
已解决
黄俊博
资深光能
资深光能
#include<iostream>
using namespace std;
int a[110][110];
int f[1000][1000];
int main()
{
int n,m;
while(1)
{
cin>>n>>m;
if(n==0 && m==0)
break;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=m;j>=1;j--)
{
f[i][j]=max(f[i][j],f[i-1][m-j]+a[i][j]);
}
}
cout<<f[n][m]<<endl;
}
return 0;
}
@王星河 @梁锦程 @陆麟瑞 @栾峻岩 @蒋智航 航 @贾文卓
2
已采纳
贾文卓
高级光能
高级光能
for(int j=m;j>=1;j--)
{
f[i][j]=max(f[i][j],f[i-1][m-j]+a[i][j]);
}
这一段貌似写错了,应该改为:
for(int j=1;j<=m;j++)
for(int k=0;k<=j;k++)
f[i][j]=max(f[i][j],f[i-1][j-k]+a[i][k]);
贾文卓在2018-07-12 16:16:12追加了内容
还有,由于这道题目是多组数据,所以每一次都要初始化。
memset(f,0,sizeof(f));
头文件:
#include<cstring>
0
0