测试点2报错
查看原帖
测试点2报错
864579
angrycookie楼主2022/11/6 16:25
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

#define max(a,b) (((a) > (b)) ? (a) : (b))
using namespace std;
long long int dp[61][61][61][61], map[61][61];
int main(){
    int m,n;
    scanf("%d%d",&m, &n);
    int x1,y1,x2,y2;
    for(int i = 1;i <= m;i++){
        for(int j = 1;j <= n;j++){
            scanf("%lld",&(map[i][j]));
        }
    }
    for(x1 = 1;x1 <= m;x1++){
        for(y1 = 1;y1 <= n;y1++){
            for(x2 = 1;x2 <= m;x2++){
                y2 = x1 + y1 - x2;
                if(x1 == x2 && y1 == y2){
                    dp[x1][y1][x2][y2] = map[x1][y1];
                }else{
                    dp[x1][y1][x2][y2] = map[x1][y1] + map[x2][y2];
                }
                dp[x1][y1][x2][y2] += max(dp[x1][y1 - 1][x2][y2 - 1],
                                         max(dp[x1][y1 - 1][x2 - 1][y2],
                                         max(dp[x1 - 1][y1][x2][y2 - 1],
                                               dp[x1 - 1][y1][x2 - 1][y2])));
            }
        }
    }
    printf("%lld\n",dp[m][n][m][n]);
}

莫名其妙的测试点错误。我交了好几次,第一次数组大小51,挂了个点。我百思不得其解抱着试一试的心态加到了61个点结果莫名其妙又过了四个点。剩下的一个究竟是为什么没过呢(发出萌新的疑问)。(还有这是不是说明了题目里给的什么100%数据小于50是骗人的>_<

2022/11/6 16:25
加载中...