1753

来源:互联网 发布:涉密网络 编辑:程序博客网 时间:2024/05/21 02:35
#include <cstdio>using namespace std;void input(unsigned short &in){char c[5];for(int i = 0, acc = 0; i < 4; ++i){scanf("%s", c);for(int j = 0; j < 4; ++j){in += ('b' == c[j])? (1 << acc): 0;++acc;}}}unsigned short flip(unsigned short in, const int num){static const unsigned short mod[] = {0x13, 0x27, 0x4E, 0x8C, 0x131, 0x272, 0x4E4, 0x8C8, 0x1310, 0x2720, 0x4E40, 0x8C80, 0x3100, 0x7200, 0xE400, 0xC800};in ^= mod[num];return in;}void dfs(int &ans, int fliped, const int num, const int in){if(ans <= fliped){return;}if(0xFFFF == in || 0 == in){ans = fliped;return;}if(num < 16){dfs(ans, fliped, num + 1, in);dfs(ans, fliped + 1, num + 1, flip(in, num));}}int main(){unsigned short in = 0;input(in);int ans = 17;dfs(ans, 0, 0, in);if(ans < 17){printf("%d\n", ans);}else{printf("Impossible\n");}return 0;}

 
原创粉丝点击