林扬泉 • 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;
}
评论: