RE求调
  • 板块灌水区
  • 楼主huchaojian
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/7 21:28
  • 上次更新2024/8/7 22:23:40
查看原帖
RE求调
1082242
huchaojian楼主2024/8/7 21:28

题目传送门

#include<bits/stdc++.h>
using namespace std;
int mx[9]={0,1,-1,2,-2,4,-4,8,-8};
struct node{
	int x,t;
	int vis[20];
}a;
node b;
bool tu[20][370],z,cnt;
int n;
int main(){
	while(cin>>n&&n){
		queue<node>q;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=16;j++){
				cin>>tu[j][i];
			}
		}
		if(tu[6][1]||tu[7][1]||tu[10][1]||tu[11][1]){
			cout<<"0"<<endl;
			continue;
		}
		a.x=6;
		a.t=1;
		for(int i=1;i<=16;i++){
			a.vis[i]=1;
		}
		cnt=0;
		a.vis[6]=0;
		a.vis[7]=0;
		a.vis[10]=0;
		a.vis[11]=0;
		q.push(a);
		while(!q.empty()){
			if(cnt) break;
			a=q.front();
			q.pop();
			int t=a.t+1;
			int x=a.x;
			for(int j=1;j<=9;j++){
				z=0;
				x=a.x+mx[j];
				if(x>=13||x<1||x%4==0) continue;
				if(tu[x][t]||tu[x+1][t]||tu[x+4][t]||tu[x+5][t]){
					z=1;
					continue;
				}				
				for(int i=1;i<=16;i++){
					b.vis[i]=a.vis[i]+1;
					if(x==i||i==x+1||i==x+4||i==x+5) b.vis[i]=0;
					if(b.vis[i]>=7){
						z=1;
						break;
					}
				}
				if(z==1) continue;
				b.t=t;
				b.x=x;
				if(t==n){
					cnt=1;
					break;
				}
				q.push(b);
			}
		}
		cout<<cnt<<endl;
	}
	return 0;
}
2024/8/7 21:28
加载中...