求助!
查看原帖
求助!
1305876
tool14514楼主2025/1/8 20:29

第一行的情况的枚举,为什么没有用?

#include<bits/stdc++.h> 
using namespace std;
bool a[7][7];int n,b[6]={0};
void p(int x){
	int o=0;
	while(x>0){
		b[o]=a%2;
		x/=2;
		o++;
	}
}
void dj(int y,int z){
	a[y][z]=(a[y][z]+1)%2;
	a[y+1][z]=(a[y+1][z]+1)%2;
	a[y][z+1]=(a[y][z+1]+1)%2;
	a[y-1][z]=(a[y-1][z]+1)%2;
	a[y][z-1]=(a[y][z-1]+1)%2;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		int m=1;
		for(int j=1;j<=5;j++){
			for(int k=1;k<=5;k++){
				cin>>a[j][k];
			}
		}
		for(int j=0;j<=31;j++){
			int ans=0,t=0;
			for(int k=0;k<=5;k++){
				b[k]=0;
			}
			p(j);
			for(int k=0;k<=4;k++){
				if(b[k]==1){
				ans++;
				dj(1,k+1);}
			}
			//dj(1,5);
			//ans++;
			for(int k=1;k<=4;k++){
				for(int l=1;l<=5;l++){
					if(a[k][l]==0){
					ans++;
					dj(k+1,l);}
				}
			}
			for(int k=1;k<=5;k++){
				if(a[5][k]==0)
				t++;
			}
			if(t<=0&&ans<=6){
			m++;
			cout<<ans<<endl;}
		}
		if(m<=1)
		cout<<-1<<endl;
	}
}
2025/1/8 20:29
加载中...