5WA 3TLE 求助
查看原帖
5WA 3TLE 求助
879339
Dio_The_World楼主2023/5/17 21:24
#include <bits/stdc++.h>
using namespace std;
int mx,n,sx,sy,a[114][114],vis[114][114];
void dfs(int x,int y,int s,int stp){
//	cout<<s<<endl;
	for(int i=y-2;i>0;i--)//left
		if(!a[x][i]){
			if(!vis[x][i]){vis[x][i]=1;dfs(x,i,s+y-i,stp+1);vis[x][i]=0;}
			break;
		}
	for(int i=y+2;i<=n;i++)//right
		if(!a[x][i]){
			if(!vis[x][i]){vis[x][i]=1;dfs(x,i,s+i-y,stp+1);vis[x][i]=0;}
			break;
		}
	for(int i=x-2;i>0;i--)//up
		if(!a[i][y]){
			if(!vis[i][y]){vis[i][y]=1;dfs(i,y,s+x-i,stp+1);vis[i][y]=0;}
			break;
		}
	for(int i=x+2;i<=n;i++)//down
		if(!a[i][y]){
			if(!vis[i][y]){vis[i][y]=1;dfs(i,y,s+i-x,stp+1);vis[i][y]=0;}
			break;
		}
	mx=max(mx,s);return;
}
int main(){
	scanf("%d%d%d",&n,&sx,&sy);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)scanf("%d",&a[i][j]);
	}vis[sx][sy]=1;
	dfs(sx,sy,0,1);
	printf("%d",mx);
	return 0;
}
2023/5/17 21:24
加载中...