问题标题: 洛谷:P1005 矩阵取数游戏 为啥WA 40分

0
0
已解决
赵逸凡
赵逸凡
初级启示者
初级启示者
#include<iostream>
#include<cstring>
using namespace std;
int n, m, a[250][250],f[250][250], ans;
int main() {
    cin>>n>>m;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
            cin >> a[i][j];
    for(int row=1; row<=n; row++) {
        memset(f, 0, sizeof(f));
        int sum=0,r=2;
        for(int l=m-2; l>=0; l--) {
            for(int i=1; i<=m; i++) {
                int j = i+l;
                if(j>m) break;
        if(i-1>=1)
            f[i][j] = max(f[i][j], f[i-1][j]+a[row][i-1]*r);
        if(j+1<=m) 
            f[i][j] = max(f[i][j],f[i][j+1]+a[row][j+1]*r);
        }r*=2;}
        for(int i=1; i<=m; i++)
            sum = max(sum, f[i][i]+a[row][i]*r);
        ans+=sum;
}
    cout<< ans;
    return 0;
}

思路就是dp,每一行取数时判断要不要取这个元素的前驱或者后继,所以为啥40分?


0
已采纳
江齐悦
江齐悦
高级光能
高级光能

这个是酷町堂的吗?

0
赵逸凡
赵逸凡
初级启示者
初级启示者

除了我关注的人外,谁如果发题解链接我立刻举报

0
我要回答