hdu-1195--Open the Lock(BFS)
来源:互联网 发布:广数g76车螺纹编程实例 编辑:程序博客网 时间:2024/04/27 20:40
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1195
#include<stdio.h>#include<iostream>#include<string.h>#include<queue>using namespace std;int vis[10][10][10][10];int s[10],s1[10];struct node{ int a,b,c,d,step;};void bfs(){ node p,q; queue<node> Q; memset(vis,0,sizeof(vis)); p.a=s[0];p.b=s[1];p.c=s[2];p.d=s[3]; vis[p.a][p.b][p.c][p.d]=1; p.step=0; Q.push(p); while(!Q.empty()) { q=Q.front();Q.pop(); if(q.a==s1[0]&&q.b==s1[1]&&q.c==s1[2]&&q.d==s1[3]) { printf("%d\n",p.step-1); return ; } for(int i=0;i<4;i++)//+1 { if(i==0) { if(q.a==9) p.a=1; else p.a=q.a+1; p.b=q.b;p.c=q.c;p.d=q.d; } else if(i==1) { if(q.b==9) p.b=1; else p.b=q.b+1; p.a=q.a;p.c=q.c;p.d=q.d; } else if(i==2) { if(q.c==9) p.c=1; else p.c=q.c+1; p.a=q.a;p.b=q.b;p.d=q.d; } else { if(q.d==9) p.d=1; else p.d=q.d+1; p.a=q.a;p.c=q.c;p.b=q.b; } if(!vis[p.a][p.b][p.c][p.d]) { p.step=q.step+1; vis[p.a][p.b][p.c][p.d]=1; Q.push(p); } } for(int i=0;i<4;i++)//-1 { if(i==0) { if(q.a==1) p.a=9; else p.a=q.a-1; p.b=q.b;p.c=q.c;p.d=q.d; } else if(i==1) { if(q.b==1) p.b=9; else p.b=q.b-1; p.a=q.a;p.c=q.c;p.d=q.d; } else if(i==2) { if(q.c==1) p.c=9; else p.c=q.c-1; p.a=q.a;p.b=q.b;p.d=q.d; } else { if(q.d==1) p.d=9; else p.d=q.d-1; p.a=q.a;p.c=q.c;p.b=q.b; } if(!vis[p.a][p.b][p.c][p.d]) { p.step=q.step+1; vis[p.a][p.b][p.c][p.d]=1; Q.push(p); } } for(int i=0;i<3;i++)//两两交换 { if(i==0) { p.a=q.b;p.b=q.a; p.c=q.c;p.d=q.d; } else if(i==1) { p.a=q.a;p.b=q.c; p.c=q.b;p.d=q.d; } else { p.a=q.a;p.b=q.b; p.c=q.d;p.d=q.c; } if(!vis[p.a][p.b][p.c][p.d]) { p.step=q.step+1; vis[p.a][p.b][p.c][p.d]=1; Q.push(p); } } } return ;}int main(){ int n; char c,str[10],str1[11]; cin>>n; while(n--) { cin>>str; cin>>str1; for(int i=0;i<4;i++) s[i]=str[i]-'0'; for(int i=0;i<4;i++) s1[i]=str1[i]-'0'; scanf("%c",&c); bfs(); }}
- HDU 1195 Open the lock( BFS)
- hdu-1195--Open the Lock(BFS)
- hdu 1195 Open the Lock (BFS)
- 【HDU 1195】Open the Lock(BFS)
- HDU 1195 Open the Lock(bfs or 双向bfs)
- hdu 1195 Open the Lock bfs
- HDU 1195 Open the Lock BFS
- hdu 1195 Open the Lock (bfs)
- Hdu 1195 Open the Lock [Bfs]
- HDU 1195 Open the Lock (双向BFS)
- HDU-1195-Open the Lock(BFS)
- HDU 1195 Open the Lock BFS
- HDU 1195 Open the Lock(双向BFS)
- hdu 1195 Open the Lock(基础bfs)
- 双向BFS-->hdu 1195 Open the Lock
- hdu 1195 Open the Lock(BFS)
- HDU 1195 Problem:OPEN THE LOCK (bfs)
- HDU--1195--bfs--Open the Lock
- flume日志采集
- 嵌入式驱动开发的前期Linux 和 C学习(四)
- adb server is out of date. killing...
- 批处理命令 For循环命令详解!
- SVN服务器搭建和使用(二)
- hdu-1195--Open the Lock(BFS)
- 这是什么错误呢?acdID InTouch2
- linux学习笔记1
- 带你轻松玩转Git--瞬间创建本地仓库
- hdu 1159 Common Subsequence (最长公共子序列)
- ScrollWindow()
- 自己实现栈
- PL/SQL程序设计
- Spatialite 按范围查找