。。。。。。。。。。。。

林扬泉  •  1年前


#include<bits/stdc++.h>
using namespace std;
bool pd(int data){
	if(data==0||data==0xffff){
		return true;
	}
	return false;
}
void dfs(int &data,int idx){
	data^=1<<idx;
	if(idx<12){
		data^=1<<(idx+4);
	}
	if(idx>3){
		data^=1<<(idx-4);
	}
	if(idx%4+1!=4){
		data^=1<<(idx+1);
	}
	if(idx%4!=0){
		data^=1<<(idx-1);
	}
}
int main(){
	int num=16;
	int data=0;
	char c;
	while(true){
		scanf("%c",&c);
		if(c=='\n'){
			continue;
		}
		--num;;
		if(c=='w'){
			data^=1<<num;
		}
		if(num==0){
			break;
		}
	}
	int step=16;
	bool flag=true;
	for(int i=0;i<=0xffff;i++){
		int adata=data;
		int astep=0;
		for(int idx=0;idx<16;idx++){
			if((1<<idx)&i){
				dfs(adata,idx);
				++astep;
			}
		}
		if(pd(adata)&&astep<step){
			step=astep;
		}
	}
	if(step==16){
		printf("Impossible\n");
	}
	else{
		printf("%d\n",step);
	}
	return 0;
}

评论: