题意:给你2个 骰子,让你通过翻转使第一个变成第二个,求最少翻转数

思路:bfs

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<string>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
typedef long long ll; struct node
{
int arr[6];
int ci;
}; int vis[1000000];
int len;
bool ju(node a, node b)
{
for (int i = 0; i < 6; i++)
if (a.arr[i] != b.arr[i])
return false;
return true;
} bool sol(node c)
{
int num = 0;
for (int i = 0; i < 6; i++)
{
num = num * 10 + c.arr[i];
}
if(vis[num])
return false;
else{
vis[num] = 1;
return true;
}
} node turn(node a, int i)
{
node c;
if (i == 1)
{
c.arr[0] = a.arr[3];
c.arr[1] = a.arr[2];
c.arr[2] = a.arr[0];
c.arr[3] = a.arr[1];
c.arr[4] = a.arr[4];
c.arr[5] = a.arr[5];
}
if (i == 2)
{
c.arr[0] = a.arr[2];
c.arr[1] = a.arr[3];
c.arr[2] = a.arr[1];
c.arr[3] = a.arr[0];
c.arr[4] = a.arr[4];
c.arr[5] = a.arr[5];
}
if (i == 3)
{
c.arr[0] = a.arr[5];
c.arr[1] = a.arr[4];
c.arr[2] = a.arr[2];
c.arr[3] = a.arr[3];
c.arr[4] = a.arr[0];
c.arr[5] = a.arr[1];
}
if (i == 4)
{
c.arr[0] = a.arr[4];
c.arr[1] = a.arr[5];
c.arr[2] = a.arr[2];
c.arr[3] = a.arr[3];
c.arr[4] = a.arr[1];
c.arr[5] = a.arr[0];
}
return c;
} int main()
{
node p1,p2;
while(scanf("%d%d%d%d%d%d",&p1.arr[0],&p1.arr[1],&p1.arr[2],&p1.arr[3],&p1.arr[4],&p1.arr[5]) != EOF)
{
scanf("%d%d%d%d%d%d",&p2.arr[0],&p2.arr[1],&p2.arr[2],&p2.arr[3],&p2.arr[4],&p2.arr[5]);
memset(vis,0,sizeof(vis));
queue<node> q;
len = p1.ci = p2.ci = 0;
q.push(p1);
int flag = 0;
while(!q.empty())
{
node tmp = q.front();
q.pop();
if(ju(tmp,p2))
{
printf("%d\n",tmp.ci);
flag = 1;
break;
}
for(int i = 1; i <= 4; i++)
{
node c = turn(tmp,i);
if(sol(c))
{
c.ci = tmp.ci + 1;
q.push(c);
}
}
}
if(!flag)
printf("-1\n");
}
return 0;
}

  

hdu 5012(bfs)的更多相关文章

  1. 非常可乐---hdu 1495(BFS)

    http://acm.hdu.edu.cn/showproblem.php?pid=1495 题意: 有3个杯子a b c:a=b+c:然后刚开始时只有a是满的,其它为空的,然后a b c三个之间互相 ...

  2. 逃离迷宫 HDU - 1728(bfs)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. Find a way HDU - 2612(bfs)

    Find a way Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. ACM-ICPC 2017 沈阳赛区现场赛 G. Infinite Fraction Path && HDU 6223(BFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6223 参考题解:https://blog.csdn.net/qq_40482495/article/d ...

  5. 牛客假日团队赛5 L Catch That Cow HDU 2717 (BFS)

    链接:https://ac.nowcoder.com/acm/contest/984/L 来源:牛客网 Catch That Cow 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 3 ...

  6. HDU.2612 Find a way (BFS)

    HDU.2612 Find a way (BFS) 题意分析 圣诞节要到了,坤神和瑞瑞这对基佬想一起去召唤师大峡谷开开车.百度地图一下,发现周围的召唤师大峡谷还不少,这对基佬纠结着,该去哪一个...坤 ...

  7. 深搜(DFS)广搜(BFS)详解

    图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...

  8. 【算法导论】图的广度优先搜索遍历(BFS)

    图的存储方法:邻接矩阵.邻接表 例如:有一个图如下所示(该图也作为程序的实例): 则上图用邻接矩阵可以表示为: 用邻接表可以表示如下: 邻接矩阵可以很容易的用二维数组表示,下面主要看看怎样构成邻接表: ...

  9. 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现

    1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...

随机推荐

  1. Linux学习--线程概念

    线程 我们知道 ,进程在各自独立的地址空间中运行,进程之间共享数据需要用mmap或者进程间通信机制,本节我们学习如何在一个进程的地址空间中执行多个线程.有些情况需要在一个进程中同时执行多个控制流程,这 ...

  2. bzoj 4373 算术天才⑨与等差数列

    4373: 算术天才⑨与等差数列 Time Limit: 10 Sec  Memory Limit: 128 MBhttp://www.lydsy.com/JudgeOnline/problem.ph ...

  3. JAVA_SE基础——20.数组的常见操作

    1.遍历数组 使用for循环来遍历数组 代码如下: public class Ergodic { public static void main(String[] args) { int[] arr ...

  4. PHP分页初探 一个最简单的PHP分页代码的简单实现

    PHP分页代码在各种程序开发中都是必须要用到的,在网站开发中更是必选的一项. 要想写出分页代码,首先你要理解SQL查询语句:select * from goods limit 2,7.PHP分页代码核 ...

  5. 第四章 Ajax与jQuery

    第四章   Ajax与jQuery 一.Ajax简介 在传统的Web应用中,每次请求服务器都会生成新的页面,用户在提交请求后,总是要等待服务器的响应.如果前一个请求没有响应,则后一个请求就不能发送,在 ...

  6. 一张图说明 Web Api 参数绑定默认规则

    请求如下: 控制器如下: 慎重说明:不管请求方式是 get 还是 post , 简单类型的参数,如 name 和 id ,其值都是从 url 里面去取. Web API 从 url 还是 body 获 ...

  7. IntelliJ IDEA sass环境配置及常见报错处理

    1.下载安装ruby,网上教程很多的,安装完之后在命令行输入ruby -v检查一下是否安装成功了.(注意安装的时候要勾选第二项).

  8. Extensions in UWP Community Toolkit - Overview

    概述 UWP Community Toolkit  中有一个 Extensions 的集合,它们可以帮助开发者实现很多基础功能,省去自己造轮子的过程,本篇我们先来看一下 Extensions 的功能都 ...

  9. es6学习笔记--Interator和Generator(以及for-of的用法)

    这几天学习了遍历器和生成器,看着资料学,有点雾里缭绕的感觉,让人忍不住放弃,还好多看了好几遍,怼着资料里的例子让自己学会了Interator和Generator.   Interator,中文简称:遍 ...

  10. 2018年Web前端自学路线

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. Web前端入门的自学路线 新手入门前端,需要学习的基础内容有很多,如下. ...