新手80分求调

P1434 [SHOI2002] 滑雪

gaojizhe05 @ 2023-11-13 21:16:05

问题

P1434只有80分,希望各位大佬指教,谢谢!

错误代码

#include<bits/stdc++.h>
using namespace std;
int r,c;
int a[105][105],b[105][105];
const int g[5][2]={{0,0},{1,0},{-1,0},{0,1},{0,-1}};
int ans=-1;
void Init(){
    cin>>r>>c;
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            cin>>a[i][j];
}
int Do(int x,int y){
    //cout<<x<<' '<<y<<endl;
    if(b[x][y]>0) return b[x][y];
    int cnt=0;
    for(int i=1;i<=4;i++){
        int nowx=x+g[i][0],nowy=y+g[i][1];
        if(nowx>=1&&nowx<=r&&nowy>=1&&nowy<=c&&a[nowx][nowy]<a[x][y]){
            b[x][y]=max(b[x][y],Do(nowx,nowy)+1);
            cnt++;
        }
    }
    if(cnt==0)
        return 1;
    else return b[x][y];
}
void Work(){
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            int f=Do(i,j);
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            ans=max(ans,b[i][j]);
    cout<<ans;
}
int main(){
    Init();
    Work();
    return 0;
}

by qnqfff @ 2023-11-13 21:20:11

if(cnt==0)
    return 1;

--->

if(cnt==0){
    b[x][y]=1;
    return 1;
}

by qnqfff @ 2023-11-13 21:21:24

@gaojizhe05


by gaojizhe05 @ 2023-11-13 21:23:38

真过了!!!感谢大佬,送大佬一个关注!!!


|