Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
124425 | lyq19198114514 | 选择客栈 | C++ | 解答错误 | 0 | 8 MS | 252 KB | 896 | 2024-01-23 14:30:17 |
#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; }