2014 网选 5012 Dice(bfs模板)
1 /* 2 题意:就是给定两个筛子,每个筛子上6个面,每个面的数字属于[1,6], 且互不相同! 3 问a筛子最少经过按照题目规定的要求转动,达到和b筛子上下左右前后的数字相同! 4 5 思路:很直白的bfs,将每一种状态对应一个数字,保证这种状态不会重新加入队列中! 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 }
转载于:https://www.cnblogs.com/hujunzheng/p/3975625.html
2014 网选 5012 Dice(bfs模板)相关推荐
- 2014 网选 广州赛区 hdu 5025 Saving Tang Monk(bfs+四维数组记录状态)
1 /* 2 这是我做过的一道新类型的搜索题!从来没想过用四维数组记录状态! 3 以前做过的都是用二维的!自己的四维还是太狭隘了..... 4 5 题意:悟空救师傅 ! 在救师父之前要先把所有的钥匙找 ...
- 2014 网选 上海赛区 hdu 5047 Sawtooth
题意:求n个'M'型的折线将一个平面分成的最多的面数! 思路:我们都知道n条直线将一个平面分成的最多平面数是 An = An-1 + n+1 也就是f(n) = (n*n + n +2)/2 对于一个 ...
- 2014 网选 5024 Wang Xifeng's Little Plot
题意:从任意一个任意一个可走的点开始找一个最长的路,这条路如果有转弯的话, 那么必须是 90度,或者没有转弯! 思路: 首先用dfs将所有可走点开始的 8 个方向上的线段的最长长度求出来 ! step ...
- 2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorith ...
- 2014 网选 5011 Game(Nim游戏,数学题)
/*题意:Nim游戏! 思路:通过异或,判断将n个数表示成二进制的形式之后,是否对应位的数字1 的个数是偶数! */ #include<iostream> using namespace ...
- 2014 网选 5007 Post Robot(暴力或者AC_自动机(有点小题大作了))
//暴力,从每一行的开始处开始寻找要查询的字符 #include<iostream> #include<cstdio> #include<cstring> #inc ...
- 2014 网选 5014 Number Sequence(异或)
1 /* 2 题意:a, b两个序列,规定由[0, n]区间的数! 3 求 a[i] ^ b[i] 的和最大! 4 5 思路:如果数字 n的二进制有x位, 那么一定存在一个数字m,使得n^m的所有二进 ...
- 《开源网店系统iWebShop2.0模板开发教程》的说明
<开源网店系统iWebShop2.0模板开发教程>是网上广为流传的一个文档,有点问题. 其中的第4章: ========================================== ...
- 爬虫第二弹:千图网电商淘宝模板图片下载
爬虫第二弹:千图网电商淘宝模板图片下载 一.功能分析: 1.下载千图网电商淘宝的所有模板图片要求是高清版本: 2.并按照主页面将图片归类文件夹. 二.思路分析: 1.利用scrapy构建scra ...
最新文章
- java 计算股票高低点_[转载]股市中常用的一些计算高低点的计算方法
- How to enable multiple text type for Product
- rssi定位算法 c语言,【论文※】An RSSI Gradient-based AP Localization Algorithm 基于RSSI梯度的AP定位算法...
- 《坐热板凳》第八次团队作业:Alpha冲刺(第二天)
- NHibernate+WCF项目实战(四)使用WAS对Webservices接口进行压力测试
- java list 效率_Java中5种List的去重方法及它们的效率对比,你用对了吗?
- PHP面向对象之领域模型+数据映射器
- 计算机网络在电力系统继电保护的应用毕业论文,毕业论文 110kV电力系统继电保护的配置...
- 系统架构师论文-论新技术的引进
- 靠!我被项目经理和同事嘲笑了,因为不会远程debug调试...
- Anaconda, Spyder更新导致Spyder环境奔溃
- 51Talk-Level 7 Unit 2 L3
- 订餐系统实验报告java_订餐系统的java实训报告.ppt
- R语言可视化——画脸谱图
- Nginx源码分析之ngx_hash_t
- 常见字读音(粤语)---(2)
- did you register the component correctly? For recursive components, make sure to provide the “name“
- CSS 实现色彩渐变
- 目前几种常见穿NAT的方法分析
- 宽带,猫,路由器的关系是什么?
热门文章
- arduinowifi.send怎么获取响应_Vue3.0 响应式原理 (一)
- python信用卡违约预测分析_Python数据分析及可视化实例之银行信用卡违约预测(24)...
- react 使用 leaflet 百度地图_【React】react项目中应用百度地图添加起始点绘制路线...
- webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
- RuoYi-Cloud 部署篇_03(windows环境 mysql版本)
- 动态修改网页icon图标
- 小程序开发(12)-之分页封装
- java map用二叉树_【课堂笔记分享】linkedlist、二叉树、hashmap
- 51php 数据不同步,php避免循环查询数据库优化一对多查询
- java类验证和装载顺序_Java类的加载机制和双亲委派模型