求救
  • 板块灌水区
  • 楼主liwenhao114514
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/7 21:41
  • 上次更新2024/8/7 22:59:26
查看原帖
求救
1113442
liwenhao114514楼主2024/8/7 21:41
#include<bits/stdc++.h>
using namespace std;
int a[366][17];
int mv[9]={1,2,-1,-2,-4,-8,4,8,0};
int gan[366][17];
int n,an;
int zx1,zs1,ys1,yx1;
void bfs(int now,int zs,int zx,int ys,int yx)
{
		if(an==1)
		{
			return;
		}
	for(int i=0;i<9;i++)
	{
		zx1=zx+mv[i];
		zs1=zs+mv[i];
		yx1=yx+mv[i];
		ys1=ys+mv[i];
		int fl=0;
		if(zx1>=1&&zx1<=16&&zs1>=1&&zs1<=16&&yx1>=1&&yx1<=16&&ys1>=1&&ys1<=16)
		{
			for(int i=1;i<=16;i++)
			{
				if(i!=zx1&&i!=zs1&&i!=yx1&&i!=ys1)
				{
					gan[now+1][i]=gan[now][i]+1;
				}
				if(i==zx1||i==zs1||i==yx1||i==ys1)
				{
					gan[now+1][i]=0;
					if(a[now+1][i]==1)
					{
						fl=1;
						break;
					}
				}
				if(gan[now+1][i]>=7)
				{
					fl=1;
					break;
				}
				
			}
			if(fl==1)
			{
			
				continue;
			}
			else
			{
				if(now+1==n)
				{
					an=1;
					return;
				}
				bfs(now+1,zs1,zx1,ys1,yx1);
				for(int i=1;i<=16;i++)
				{
					gan[now+1][i]=0;
					
				}
			}
		}
	
	}
	return;
}
int main()
{
	//ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	while(cin>>n&&n!=0)
	{
		an=0;
		memset(a,0,sizeof(a));
		memset(gan,0,sizeof(gan));
		for(int j=1;j<=n;j++)
		{
			for(int i=1;i<=16;i++)
			{
				cin>>a[i][j];
			}
		}
		if(a[6][1]==1||a[7][1]==1||a[10][1]==1||a[11][1]==1)
		{
			cout<<0<<'\n';
			continue;
		}
		bfs(1,6,10,7,11);
		cout<<an<<'\n';
	}
}
2024/8/7 21:41
加载中...