枚举、

1.枚举
熄灯问题解析1
熄灯问题解析2

自己写的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <map>
#include <algorithm>
#include<cstring>
#include<iostream>
using namespace std;
int a[8][8];
int pre[8][8];
bool guess(){
    
    
	int k=0,t=0,i,j;
	for(i=2;i<=5;i++){
    
    
		for(j=1;j<=6;j++){
    
    
			pre[i][j]=(a[i-1][j]+pre[i-2][j]+pre[i-1][j-1]+pre[i-1][j+1]+pre[i-1][j])%2;
		} 
			 
	}
	for(i=1;i<=6;i++){
    
    
		if(a[5][i]!=(pre[5][i-1]+pre[5][i+1]+pre[4][i]+pre[5][i])%2)
		return false;
	}
	return true;
	
	
}
void bit(){
    
    
	int i,j,c=1;	
	for(i=1;i<=6;i++)
	pre[1][i]=0;
	while(!guess()){
    
    //位运算 
		c=1; 
		pre[1][c]++;		
		while(pre[1][c]>1){
    
    
			pre[1][c]=0;
			c++;
			pre[1][c]++;
		}
	}
	for(i=1;i<=5;i++){
    
    
		for(j=1;j<6;j++){
    
    
			cout<<pre[i][j]<<" ";
		}
		cout<<pre[i][j]<<endl;
	}
}
void init(){
    
    
	int i;
	for(i=0;i<=5;i++)
	pre[i][0]=0,pre[i][7]=0;
	for(i=0;i<=6;i++)
	pre[0][i]=0;
} 
int main(){
    
    
	int x,i,j;

	int t;
	//while(cin>>t){
    
    
	//	while(t--){
    
    
			for(i=1;i<=5;i++){
    
    
		    for(j=1;j<=6;j++){
    
    
			cin>>a[i][j];
		      }
	        }
	        init();
	        bit();
	//	}
	//}
	
	
	
} 

猜你喜欢

转载自blog.csdn.net/weixin_46064382/article/details/110825583