hdu 5012 Dice
At the beginning, the two dices may face different(which means there exist some i, ai ≠ bi). Ddy wants to make the two dices look the same from all directions(which means for all i, ai = bi) only by the following four rotation operations.(Please read the picture for more information)
Now Ddy wants to calculate the minimal steps that he has to take to achieve his goal.For each case, the first line consists of six integers a1,a2,a3,a4,a5,a6, representing the numbers on dice A.
The second line consists of six integers b1,b2,b3,b4,b5,b6, representing the numbers on dice B.
1 2 3 4 5 6
1 2 3 4 5 6
1 2 5 6 4 3
1 2 3 4 5 6
1 4 2 5 3 6
3
-1
题意:两个骰子,要把第一个骰子转到和第二个一样,有4种转法,求最少的次数
直接bfs,不过我用G++提交超时,用C++提交可以过,可能是使用了queue的原因。。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stdlib.h>
#include<algorithm>
#include<queue>
#include<map>
using namespace std;
struct Node
{
int a[];
int t;
}st,ed;
int vis[][][][][][];
void bfs()
{ queue<Node>q;
q.push(st); vis[st.a[]][st.a[]][st.a[]][st.a[]][st.a[]][st.a[]]=;
Node t1,t2;
Node tmp;
while(!q.empty())
{
t1=q.front();
q.pop();
if(t1.a[]==ed.a[] && t1.a[]==ed.a[]&& t1.a[]==ed.a[]&& t1.a[]==ed.a[]&& t1.a[]==ed.a[] && t1.a[]==ed.a[])
{
printf("%d\n",t1.t);
return;
} t2=t1;
t2.a[]=t1.a[];
t2.a[]=t1.a[];
t2.a[]=t1.a[];
t2.a[]=t1.a[];
if(vis[t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]]==)
{
vis[t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]]=;
t2.t=t1.t+;
q.push(t2);
} t2=t1;
t2.a[]=t1.a[];
t2.a[]=t1.a[];
t2.a[]=t1.a[];
t2.a[]=t1.a[];
if(vis[t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]]==)
{
vis[t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]]=;
t2.t=t1.t+;
q.push(t2);
} t2=t1;
t2.a[]=t1.a[];
t2.a[]=t1.a[];
t2.a[]=t1.a[];
t2.a[]=t1.a[];
if(vis[t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]]==)
{
vis[t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]]=;
t2.t=t1.t+;
q.push(t2);
} t2=t1;
t2.a[]=t1.a[];
t2.a[]=t1.a[];
t2.a[]=t1.a[];
t2.a[]=t1.a[];
if(vis[t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]]==)
{
vis[t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]][t2.a[]]=;
t2.t=t1.t+;
q.push(t2);
}
}
printf("-1\n");
}
int main()
{
while(scanf("%d%d%d%d%d%d",&st.a[],&st.a[],&st.a[],&st.a[],&st.a[],&st.a[])==)
{
scanf("%d%d%d%d%d%d",&ed.a[],&ed.a[],&ed.a[],&ed.a[],&ed.a[],&ed.a[]);
st.t=;
memset(vis,,sizeof(vis));
bfs();
}
return ;
}
hdu 5012 Dice的更多相关文章
- HDU 5012 Dice (BFS)
事实上是非常水的一道bfs,用字符串表示每一个状态,map判重就ok了. 题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5012 #include&l ...
- ACM学习历程—HDU 5012 Dice(ACM西安网赛)(bfs)
Problem Description There are 2 special dices on the table. On each face of the dice, a distinct num ...
- HDU 5012 Dice DFS
简单DFS //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include <stdio.h ...
- Spring-1-F Dice(HDU 5012)解题报告及测试数据
Dice Time Limit:1000MS Memory Limit:65536KB Description There are 2 special dices on the table. ...
- HDU 5012 骰子旋转(DFS)
http://acm.hdu.edu.cn/showproblem.php?pid=5012 保存骰子的状态,然后用dfs或者bfs搜索 还是再讲一下dfs 我们的目标是找一个与b相同,且转次数最少的 ...
- hdu 5012 模拟+bfs
http://acm.hdu.edu.cn/showproblem.php?pid=5012 模拟出骰子四种反转方式,bfs,最多不会走超过6步 #include <cstdio> #in ...
- hdu 5012 bfs --- 慎用STL 比方MAP判重
http://acm.hdu.edu.cn/showproblem.php?pid=5012 发现一个问题 假设Sting s = '1'+'2'+'3'; s!="123"!!! ...
- HDU 4652 Dice(期望)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4652 题意:一个m个面的筛子.两种询问:(1)平均抛多少次后使得最后n次的面完全一样:(2)平均抛多少 ...
- HDU 4652 Dice:期望dp(成环)【错位相减】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4652 题意: 给你一个有m个面的骰子. 两种询问: (1)"0 m n": “最后 ...
随机推荐
- 获取布局 ActionBar
LayoutInflater inflater = getLayoutInflater();View imageLayout = inflater.inflate(R.layout.preferenc ...
- springMVC 注解版
http://blog.csdn.net/liuxiit/article/details/5756115 http://blog.csdn.net/hantiannan/article/categor ...
- 忘记mysql 5.7的密码
for windows: http://blog.chinaunix.net/uid-27570589-id-3511820.html 一.将net stop mysql; 二.在命令行中 C:\Us ...
- apache ab工具对网站进行压力测试
Apache -- ab工具主要测试网站的(并发性能) 这个工具非常的强大. 基本语法 : cmd>ab.exe –n 请求总次数 -c 并发数 请求页面的url 进入到ab.ex ...
- django: db - many to one
models 模块中的对象有三种对应关系:多对一,多对多,一对一.本讲说明多对一关系. blog/models.py: from django.db import models class Emplo ...
- sqlserver获取当前id的前一条数据和后一条数据
一.条件字段为数值的情况 select * from tb where id=@id; --当前记录 select top 1 * from tb where id>@id order ...
- oracle 优化 —— 分区表
一.分区表简介 分区表类型:[范围分区].[列表分区] [hash分区] [这些分区的组合分区] 范围分区:以某一个范围进行分区.eg:时间段划分. 列表分区:以某一些几个值进行分区.eg:地区 ...
- java 修改文件名
// 修改文件名 public static boolean modifyFileName(String serverPath, String oldFileName, String newLogin ...
- 如何发布Web项目到互联网
比如我们有个项目想要发布到互联网上,我们首先需要购买域名以及主机,主机的话,推荐云主机(本人推荐西部数码或者阿里云),性能好: 我们先在云主机上搭建环境,比如Mysql,Jdk,Tomcat: 然后我 ...
- Eclipse远程提交hadoop集群任务
文章概览: 1.前言 2.Eclipse查看远程hadoop集群文件 3.Eclipse提交远程hadoop集群任务 4.小结 1 前言 Hadoop高可用品台搭建完备后,参见<Hadoop ...