不知道问题在哪
查看原帖
不知道问题在哪
199257
see_player楼主2024/11/10 13:57
#include <bits/stdc++.h>
using namespace std;
int n,x,y,ans,temp,num;
int a[101][101],b[10001];
void dfs(int x,int y,int ans){
	for(int i=1;i<=n;i++){
		if(a[i][y]==1) temp++;
	}
	for(int i=1;i<=n;i++){
		if(a[x][i]==1) temp++;
	}
	int num=a[x][y+1]+a[x][y-1]+a[x+1][y]+a[x-1][y];
	if(temp==2*n||num==1&&temp==(2*n-1)||num==2&&temp==(2*n-2)&&num==3&&temp==(2*n-3)){
		b[ans]=1;
		return ;
	}	
	for(int i=1;i<=n;i++){
		if(a[x][i]==0&&abs(i-y)>1){
			ans+=abs(y-i);
			a[x][i]++;
			dfs(x,i,ans);
			a[x][i]--;
		}
	}
	for(int i=1;i<=n;i++){
		if(a[i][y]==0&&abs(i-x)>1){
			ans+=abs(x-i);
			a[i][y]++;
			dfs(i,y,ans);
			a[i][y]--;
		}
	}
}
int main (){
	cin>>n>>x>>y;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	a[x][y]++;
	dfs(x,y,0);
	for(int i=10000;i>=0;i--){
		if(b[i]!=0){
			cout<<i;
			return 0;
		}
	}	
}
2024/11/10 13:57
加载中...