hdu 5012 Dice
2014-11-20 15:06
453 查看
题意:有两个六面的骰子,上面写着1~6。每一步只能向左,右,前,后滚,问最少需要滚几次才能使两个骰子六面完全相同。
思路:BFS。简单写个哈希判重,很轻松就搜过了。
思路: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; }
相关文章推荐
- hdu 5012——Dice
- hdu 5012 Dice BFS 2014 ACM/ICPC Asia Regional Xi'an Online
- 【搜索】 HDU 5012 Dice
- BFS + 剪枝 之 hdu 5012 Dice
- HDU5012 Dice
- 【搜索】 HDU 5012 Dice
- BFS + 剪枝 之 hdu 5012 Dice
- HDU 5012 Dice (BFS)
- HDU 5012 Dice bfs
- HDU 5012-Dice(BFS)
- hdu 5012 Dice 【Dfs】
- hdu 5012 Dice 2014 ACM/ICPC Asia Regional Xi'an Online
- HDU 5012 Dice (bfs + 记忆化搜索)
- HDU - 5012 Dice
- hdu 5012 Dice(隐式图搜索)
- HDU 5012 Dice
- HDU 5012 Dice(西安网络赛F题)
- HDU - 5012 Dice(bfs+hash)
- HDU 5012 Dice (2014年西安赛区网络赛F题)
- HDU - 5012 Dice(BFS)