BFS + 状态压缩 POJ 2965 The Pilots Brothers' refrigerator
2013-07-29 21:28
399 查看
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> using namespace std; char c; int m; int sp[999999]; struct Q { int sta,ans,r,c,pre; } q[999999],t,t1; int top = 0,sum = 999999; bool vis[65536]; void search(int site,int sta,int ans) { int s = 0,e = 0; q[e].r = q[e].c = q[e].pre = -1; q[e].sta = sta; q[e++].ans = ans; vis[sta] = true; int i,j; while(s != e) { t1 = q[s++]; if(t1.sta == 65535) { sum = t1.ans; m = s-1; return; } for(i = 1; i <= 4; i++) for(j = 1; j <= 4; j++) { t = t1; for(site = i*4-3; site <= i*4; site++) { t.sta ^= (1<< (site-1)); } site = j%4; if(site == 0) site = 4; for(; site <= 16; site += 4) { t.sta ^= (1<< (site-1)); } t.sta ^= (1<< i*4+j-5); if(vis[t.sta] == false) { t.ans++; q[e] = t; q[e].pre = s-1; q[e].r = i; q[e++].c = j; vis[t.sta] = true; } } } } void output_path(int m)//递归输出路径 { if(q[m].pre == -1) return; output_path(q[m].pre); printf("%d %d\n",q[m].r,q[m].c); } int main() { int i,j; char s[10]; sum = 999999; memset(vis,false,sizeof(vis)); int t; for(m = 0,t = 1,i = 0; i < 4; i++) { scanf("%s",s); for(j = 0; j < 4; j++) { if(s[j] == '-') m += t; t *= 2; } } search(1,m,0); cout<<sum<<endl; output_path(m); return 0; }
相关文章推荐
- BFS + 状态压缩 POJ 2965 The Pilots Brothers' refrigerator
- POJ2965 The Pilots Brothers' refrigerator 「BFS+状态压缩」
- POJ-2965 The Pilots Brothers' refrigerator 枚举 状态压缩
- ZOJ 1301 The New Villa (BFS + 状态压缩)
- UVa 321 The New Villa ( BFS + 状态压缩判重)
- Poj_2965 The Pilots Brothers' refrigerator(状态压缩,bfs)
- The Pilots Brothers' refrigerator(POJ 2965)(dfs枚举+状态压缩)
- ZOJ 1301 The New Villa (BFS + 状态压缩)
- poj 3311 Hie with the Pie(状态压缩DP+最短路)
- HDU 3006 The Number of set (状态压缩dp)
- hdoj 5094 Maze 【BFS + 状态压缩】 【好多坑】
- POJ3311——Hie with the Pie(状态压缩DP)
- poj 3311 Hie with the Pie 旅行商问题变形 记录最短路径压缩状态
- HDU 4057 Rescue the Rabbit(AC自动机+状态压缩dp)
- CSU 1855: Shut the Box 二进制状态压缩
- poj 3311 Hie with the Pie (弗洛伊德+状态压缩)
- HDU 4634 - BFS + 状态压缩
- poj2965 The Pilots Brothers' refrigerator(枚举,压缩)
- POJ 3311 Hie with the Pie (Floyd + 暴力全排列 || Floyd + 状态压缩DP (已补充))
- POJ 3311 Hie with the Pie(状态压缩dp)