不知道为什么会wrong
查看原帖
不知道为什么会wrong
662317
KuaiYun楼主2022/12/21 00:38
using namespace std;
int a[100][100],vis[100][100];
int m,n,ans;
void init(){
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++) vis[i][j]=0;
} 
void search(int x,int y,int step){
	if(step>ans) ans=step;
	if(x-1>=1&&!vis[x-1][y]&&a[x-1][y]<a[x][y])
	{
		vis[x-1][y]=1;
		search(x-1,y,step+1);
		vis[x-1][y]=0;
	}
	if(y-1>=1&&!vis[x][y-1]&&a[x][y-1]<a[x][y])
	{
		vis[x][y-1]=1;
		search(x,y-1,step+1);
		vis[x][y-1]=0;
	}
	if(x+1<=n&&!vis[x+1][y]&&a[x+1][y]<a[x][y])
	{
		vis[x+1][y]=1;
		search(x+1,y,step+1);
		vis[x+1][y]=0;
	}
	if(y+1<=m&&!vis[x][y+1]&&a[x][y+1]<a[x][y])
	{
		vis[x][y+1]=1;
		search(x,y+1,step+1);
		vis[x][y+1]=0;
	}
	return ;
}
int main(){
	cin>>m>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++) cin>>a[i][j];
		
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){
			init();
			search(i,j,1);
		}
		cout<<ans;
}
2022/12/21 00:38
加载中...