?终于知道这道题为什么第一和第二个数据过不了了

P1434 [SHOI2002] 滑雪

sel_fish @ 2019-07-04 08:24:25

怀疑这题第一和第二个数据有误 @kkksc03 @memset0 @chen_zhe

题目上给的第一个r是行数,第二个c是列数,然而我这样写是得了80分

#include<bits/stdc++.h>
using namespace std;
const int fx[]={-1,0,1,0},fy[]={0,-1,0,1};
int mapp[105][105],f[105][105],r,c;
inline int dfs(int x,int y) {
    if(f[x][y]) return f[x][y];
    int num=1;
    for(int i=0;i<4;i++) {
        int dx=x+fx[i],dy=y+fy[i];
        if(dx>0&&dx<=c&&dy>0&&dy<=r&&mapp[x][y]<mapp[dx][dy]) {//c是列数,x应该小于列数,同理
            num=max(num,dfs(dx,dy)+1);
        }
    }
    f[x][y]=max(f[x][y],num);
    return f[x][y];
}
int main() {
    cin>>r>>c;
    for(int i=1;i<=r;i++) {
        for(int j=1;j<=c;j++) {
            scanf("%d",&mapp[i][j]);
        }
    }
    int ans=0;
    for(int i=1;i<=r;i++) {
        for(int j=1;j<=c;j++) {
            ans=max(ans,dfs(i,j));
        }
    }
    cout<<ans;
    return 0;
}

AC代码

#include<bits/stdc++.h>
using namespace std;
const int fx[]={-1,0,1,0},fy[]={0,-1,0,1};
int mapp[105][105],f[105][105],r,c;
inline int dfs(int x,int y) {
    if(f[x][y]) return f[x][y];
    int num=1;
    for(int i=0;i<4;i++) {
        int dx=x+fx[i],dy=y+fy[i];
        if(dx>0&&dx<=r&&dy>0&&dy<=c&&mapp[x][y]<mapp[dx][dy]) {//把横坐标小于行数,应该知道这是错的,然而AC了
            num=max(num,dfs(dx,dy)+1);
        }
    }
    f[x][y]=max(f[x][y],num);
    return f[x][y];
}
int main() {
    cin>>r>>c;
    for(int i=1;i<=r;i++) {
        for(int j=1;j<=c;j++) {
            scanf("%d",&mapp[i][j]);
        }
    }
    int ans=0;
    for(int i=1;i<=r;i++) {
        for(int j=1;j<=c;j++) {
            ans=max(ans,dfs(i,j));
        }
    }
    cout<<ans;
    return 0;
}

怀疑第一二个数据有误,请更正

如果真是我错了,请指出我的错误,谢谢管理员们或红名大佬们

by Ynoi @ 2019-07-04 08:25:35

@sel_fish 不要一次性@这么多管理员


by Ynoi @ 2019-07-04 08:26:59

@sel_fish 而且一个11.1k通过的题目一般不会是数据错了

是你自己写挂了不要怪数据


by StudyingFather @ 2019-07-04 08:28:14

@sel_fish 不是数据有问题,是您混淆了行号列号和横纵坐标两个概念。

二维数组第一维是行号,第二维是列号,所以转移的时候要求行号小于行的总数,列号小于列的总数。


by ButterflyDew @ 2019-07-04 08:29:35

是的,你是错的


by sel_fish @ 2019-07-04 08:32:16

@StudyingFather 谢谢大佬指出错误


|