Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
123946 刘星辰liuxingchen 翻转棋盘 C++ 通过 100 5 MS 252 KB 896 2024-01-23 10:27:21

Tests(25/25):


#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; }


测评信息: