HDU 5012 Dice (2014年西安赛区网络赛F题)
2015-09-12 22:59
531 查看
1.题目描述:点击打开链接
2.解题思路:本题利用BFS解决。本题是一道隐式图搜索题目,不过本题的状态扩展比较简单,直接用常量数组即可搞定,然后就可以进行扩展了,比较简单就不再详细叙述过程了。
3.代码:
2.解题思路:本题利用BFS解决。本题是一道隐式图搜索题目,不过本题的状态扩展比较简单,直接用常量数组即可搞定,然后就可以进行扩展了,比较简单就不再详细叙述过程了。
3.代码:
#include<iostream> #include<algorithm> #include<cassert> #include<string> #include<sstream> #include<set> #include<bitset> #include<vector> #include<stack> #include<map> #include<queue> #include<deque> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<cctype> #include<complex> #include<functional> #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; #define me(s) memset(s,0,sizeof(s)) #define rep(i,n) for(int i=0;i<(n);i++) typedef long long ll; typedef unsigned int uint; typedef unsigned long long ull; typedef pair <int, int> P; typedef int State[6]; const int N=6000000; const int Hashsize=10007; State st ; State goal; int dist ; int head[Hashsize],Next ; int op[][6]={{3,2,0,1,4,5},{4,5,2,3,1,0},{2,3,1,0,4,5},{5,4,2,3,0,1}}; int Hash(State&s) { int v=0; for(int i=0;i<6;i++) v=v*6+s[i]; return v%Hashsize; } void init_lookup_table() { memset(head,0,sizeof(head)); } int try_to_insert(int s) { int h=Hash(st[s]); int u=head[h]; while(u) { if(memcmp(st[u],st[s],sizeof(st[s]))==0)return 0; u=Next[u]; } Next[s]=head[h]; head[h]=s; return 1; } int bfs() { init_lookup_table(); int front=1,rear=2; while(front<rear) { State&s=st[front]; if(memcmp(goal,s,sizeof(s))==0)return front; for(int i=0;i<4;i++) { State&t=st[rear]; for(int j=0;j<6;j++) t[j]=s[op[i][j]]; dist[rear]=dist[front]+1; if(try_to_insert(rear))rear++; } front++; } return 0; } bool judge() { for(int i=0;i<6;i++) if(st[1][i]!=goal[i])return false; return true; } int main() { while(~scanf("%d",&st[1][0])) { for(int i=1;i<6;i++) scanf("%d",&st[1][i]); for(int i=0;i<6;i++) scanf("%d",&goal[i]); for(int i=0;i<6;i++) st[1][i]--,goal[i]--; int ans; if(judge()){printf("0\n");continue;} else ans=bfs(); if(ans)printf("%d\n",dist[ans]); else puts("-1"); } }
相关文章推荐
- 网络请求配置
- 【转载】HTTP 头部解释
- HTTP响应状态码大全
- Android 网络连接——URLConnection
- http://mikewang.blog.51cto.com/3826268/1263802/
- 若操作系统没有加载网卡驱动,网卡虽然在系统设备树上,但网卡接口创建不了,那网卡实际能不能接收到数据?
- 网线上传输的是模拟信号还是数字信号?
- iOS开发: 网络解析数据之JSON解析
- 网卡上除RJ-45接口外,还需要其它元件吗?
- URLConnection的GET方法与POST方法,HttpClient的GET方法与POST方法
- 以太网MAC是什么?
- 网络性能测试工具iperf详细使用图文教程
- 三级网络技术学习总结
- iperf网络性能测试
- iOS9适配 HTTPS
- TCP粘包,UDP不存在粘包问题
- SOCKET网络通信
- 22_01_httpd虚拟主机
- httpclient
- HTTP协议访问网络——HttpURLConnection