日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2014 网选 5012 Dice(bfs模板)

發(fā)布時(shí)間:2025/3/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2014 网选 5012 Dice(bfs模板) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 /* 2 題意:就是給定兩個(gè)篩子,每個(gè)篩子上6個(gè)面,每個(gè)面的數(shù)字屬于[1,6], 且互不相同! 3 問a篩子最少經(jīng)過按照題目規(guī)定的要求轉(zhuǎn)動(dòng),達(dá)到和b篩子上下左右前后的數(shù)字相同! 4 5 思路:很直白的bfs,將每一種狀態(tài)對(duì)應(yīng)一個(gè)數(shù)字,保證這種狀態(tài)不會(huì)重新加入隊(duì)列中! 6 */ 7 #include<iostream> 8 #include<cstdio> 9 #include<cstring> 10 #include<algorithm> 11 #include<queue> 12 using namespace std; 13 14 int a[7], ss; 15 int vis[654330]; 16 17 struct node{ 18 int k[7]; 19 node(){} 20 node(int a1, int a2, int a3, int a4, int a5, int a6){ 21 k[1]=a1; 22 k[2]=a2; 23 k[3]=a3; 24 k[4]=a4; 25 k[5]=a5; 26 k[6]=a6; 27 } 28 int step; 29 }; 30 31 queue<node>q; 32 33 34 int sum(node x){ 35 int s=0; 36 for(int i=1; i<=6; ++i) 37 s= s*10 + x.k[i]; 38 return s; 39 } 40 41 bool bfs(){ 42 while(!q.empty()) q.pop(); 43 node cur(a[1], a[2], a[3], a[4], a[5], a[6]); 44 cur.step=0; 45 q.push(cur); 46 vis[sum(cur)]=1; 47 while(!q.empty()){ 48 cur = q.front(); 49 if(sum(cur)==ss){ 50 printf("%d\n", cur.step); 51 return true; 52 } 53 q.pop(); 54 node *nt = new node(cur.k[5], cur.k[6], cur.k[3], cur.k[4], cur.k[2], cur.k[1]); 55 int v = sum(*nt); 56 if(!vis[v]){ 57 vis[v]=1; 58 nt->step = cur.step + 1; 59 q.push(*nt); 60 } 61 62 nt = new node(cur.k[6], cur.k[5], cur.k[3], cur.k[4], cur.k[1], cur.k[2]); 63 v = sum(*nt); 64 if(!vis[v]){ 65 vis[v]=1; 66 nt->step = cur.step + 1; 67 q.push(*nt); 68 } 69 70 nt = new node(cur.k[3], cur.k[4], cur.k[2], cur.k[1], cur.k[5], cur.k[6]); 71 v = sum(*nt); 72 if(!vis[v]){ 73 vis[v]=1; 74 nt->step = cur.step + 1; 75 q.push(*nt); 76 } 77 78 nt = new node(cur.k[4], cur.k[3], cur.k[1], cur.k[2], cur.k[5], cur.k[6]); 79 v = sum(*nt); 80 if(!vis[v]){ 81 vis[v]=1; 82 nt->step = cur.step + 1; 83 q.push(*nt); 84 } 85 } 86 return false; 87 } 88 89 int main(){ 90 while(scanf("%d%d%d%d%d%d", &a[1], &a[2], &a[3], &a[4], &a[5], &a[6])!=EOF){ 91 ss=0; 92 for(int i=1; i<=6; ++i){ 93 int x; 94 scanf("%d", &x); 95 ss = ss * 10 + x; 96 } 97 memset(vis, 0, sizeof(vis)); 98 if(!bfs()) 99 printf("-1\n"); 100 } 101 return 0; 102 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/hujunzheng/p/3975625.html

總結(jié)

以上是生活随笔為你收集整理的2014 网选 5012 Dice(bfs模板)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。