小白80分求助
查看原帖
小白80分求助
699271
gaojizhe05楼主2023/11/12 21:51

问题

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

错误代码

#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;
}
2023/11/12 21:51
加载中...