20分求助
查看原帖
20分求助
764672
ZJLmath楼主2023/6/11 06:26
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int n;
const int maxn=1.5*1e3;
int f[maxn][maxn],r,c;
bool is_in(int x,int y){
	return x>=1&&x<=n&&y>=1&&y<=n;
}
bool vis[maxn][maxn];
int ans=-1;
void dfs(int x,int y,int step){
	if(!is_in(x,y))return;
	if(step>ans)ans=step;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(vis[i][j]==0&&((abs(x-i)==1&&abs(y-j)>1)||(abs(y-j)==1&&abs(x-i)>1))&&f[i][j]>f[x][y]){
				vis[i][j]=1;
				dfs(i,j,step+1);
				vis[i][j]=0;
			}
		}
	}
}
int main(){
	cin>>n;
	cin>>r>>c;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>f[i][j];
		}
	}
	dfs(r,c,1);
	cout<<ans;
	return 0;
}

大红大紫

2023/6/11 06:26
加载中...