hdu 5012 Dice
来源:互联网 发布:网络摄像头有ip地址吗 编辑:程序博客网 时间:2024/06/05 07:05
题意:有两个六面的骰子,上面写着1~6。每一步只能向左,右,前,后滚,问最少需要滚几次才能使两个骰子六面完全相同。
思路:BFS。简单写个哈希判重,很轻松就搜过了。
#include<iostream>#include<cmath>#include<queue>#include<vector>#include<algorithm>#include<string.h>#include<cstdio>using namespace std;struct node{ int val[6];};node s,t;node L(node& n){ node re; re.val[4]=n.val[4]; re.val[5]=n.val[5]; re.val[0]=n.val[3]; re.val[3]=n.val[1]; re.val[1]=n.val[2]; re.val[2]=n.val[0]; return re;}node R(node& n){ node re; re.val[4]=n.val[4]; re.val[5]=n.val[5]; re.val[3]=n.val[0]; re.val[1]=n.val[3]; re.val[2]=n.val[1]; re.val[0]=n.val[2]; return re;}node F(node& n){ node re; re.val[2]=n.val[2]; re.val[3]=n.val[3]; re.val[0]=n.val[5]; re.val[5]=n.val[1]; re.val[1]=n.val[4]; re.val[4]=n.val[0]; return re;}node B(node& n){ node re; re.val[2]=n.val[2]; re.val[3]=n.val[3]; re.val[5]=n.val[0]; re.val[1]=n.val[5]; re.val[4]=n.val[1]; re.val[0]=n.val[4]; return re;}int n2i(node& n){ int re=0; for(int i=0;i<6;i++){ re*=7; re+=n.val[i]; } return re;}int dis[120000];int main(){ while(cin>>s.val[0]>>s.val[1]>>s.val[2]>>s.val[3]>>s.val[4]>>s.val[5]){ memset(dis,-1,sizeof(dis)); for(int i=0;i<6;i++){ cin>>t.val[i]; } int ss=n2i(s); int tt=n2i(t); queue<node> que; que.push(s); dis[ss]=0; int ans=-1; while(!que.empty()){ node cur=que.front(); que.pop(); node nd; if(n2i(cur)==tt){ ans=dis[n2i(cur)]; break; } nd=L(cur); if(-1==dis[n2i(nd)]){ dis[n2i(nd)]=dis[n2i(cur)]+1; que.push(nd); } nd=R(cur); if(-1==dis[n2i(nd)]){ dis[n2i(nd)]=dis[n2i(cur)]+1; que.push(nd); } nd=F(cur); if(-1==dis[n2i(nd)]){ dis[n2i(nd)]=dis[n2i(cur)]+1; que.push(nd); } nd=B(cur); if(-1==dis[n2i(nd)]){ dis[n2i(nd)]=dis[n2i(cur)]+1; que.push(nd); } } cout<<ans<<endl; } return 0;}
0 0
- hdu 5012 Dice
- HDU 5012 Dice
- hdu 5012 dice
- 【搜索】 HDU 5012 Dice
- HDU 5012 Dice
- hdu 5012 Dice
- HDU 5012-Dice(BFS)
- Dice - HDU 5012 搜索
- HDU 5012 Dice bfs
- hdu 5012 Dice
- HDU - 5012 Dice BFS
- HDU - 5012 Dice
- HDU 5012 Dice
- hdu 5012 Dice 【Dfs】
- bfs-HDU 5012Dice
- Dice HDU 5012
- HDU 5012 Dice (bfs)
- hdu 5012——Dice
- 第十三周项目一b
- 静态库使用类别报错unrecognized selector sent to instance
- linux 环境执行JMeter
- 3倍数组
- iOS围绕某点缩放或旋转的AnchorPoint的设定
- hdu 5012 Dice
- WPF在子窗体中关闭整个程序
- C#ModalPopupExtender相关
- 第13周项目1(5)
- WatchKit编程指南:Glance--Glance开发基础
- XSS编码剖析
- 输入一列数组,输出它的逆序数组
- c++ 学习 随笔二
- SSH下做Junit测试