本文共 661 字,大约阅读时间需要 2 分钟。
题解:把所有的状态看成01二进制,状态压缩,比较简单的bfs+状态压缩
#include#include #include #include #include using namespace std;#define M 1<<20+1bool vis[M];int l;struct node{ int st,move;};int bfs(int res){ memset(vis,false,sizeof(vis)); node p,q; queue Q; p.move = 0;p.st = res; Q.push(p); while(!Q.empty()){ q = Q.front();Q.pop(); if(!q.st) return q.move; for(int i = 0;i < l;i++){ p = q; if(!i) p.st = p.st ^ 3;//翻转第一个,只影响第二个 else p.st = p.st ^ (7 <<(i-1));//中间翻转 p.st &= (1< < l;i++) sum = sum * 2 + str[i] - '0'; int ans = bfs(sum); if(ans != -1) cout << ans << endl; else cout << "NO" << endl; } return 0;}
转载地址:http://mdsgi.baihongyu.com/