问题标题: 酷町堂:2726 帮助酷町喵

1
1
已解决
黄俊博
黄俊博
资深光能
资深光能

2726帮助酷町喵

#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
我要回答