70分,2WA+1TLE
查看原帖
70分,2WA+1TLE
35702
ttbr5145楼主2020/8/3 12:43

#1和#10是WA, #2是TLE 样例通过 求助dalao哪里错了:

#include<bits/stdc++.h>
using namespace std;
int r,c;
int a[110][110];
int f[110][110];
int xway[4]={0,1,0,-1},yway[4]={1,0,-1,0};
void dp(int x,int y,int k){
    if(f[x][y]<k){
        f[x][y]=k;
    }
    else{
        return;
    }
    for(int i=0;i<4;i++){
        if(x+xway[i]>=1&&x+xway[i]<=r&&y+yway[i]>=1&&y+yway[i]<=c&&a[x+xway[i]][y+yway[i]]>a[x][y]){
            //cout<<a[x][y]<<"->"<<a[x+xway[i]][y+yway[i]]<<endl;
            dp(x+xway[i],y+yway[i],k+1);
        }
    }
    return;
}
int main(int argc,char* argv[]){
    cin>>r>>c;
    memset(f,INT_MIN,sizeof(f));
    int minn=INT_MAX,x,y;
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            cin>>a[i][j];
            if(a[i][j]<minn){
                x=i;
                y=j;
                minn=a[i][j];
            }
        }
    }
    dp(x,y,1);
    int maxn=INT_MIN;
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            maxn=max(maxn,f[i][j]);
        }
    }
    cout<<maxn<<endl;
    return 0;
}
//从最低点算起,向外逐层递归推进并比较,最后输出最远点
2020/8/3 12:43
加载中...