hdu 1430
魔板
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 1649 Accepted Submission(s):
348
1
2 3 4
8 7 6 5
对于魔板,可施加三种不同的操作,具体操作方法如下:
A:
上下两行互换,如上图可变换为状态87654321
B: 每行同时循环右移一格,如上图可变换为41236785
C:
中间4个方块顺时针旋转一格,如上图可变换为17245368
给你魔板的初始状态与目标状态,请给出由初态到目态变换数最少的变换步骤,若有多种变换方案则取字典序最小的那种。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<algorithm>
#include<queue>
using namespace std; string start,ans[];
int hash[]={};
bool vis[];
struct node
{
string c,step;
int val;
};
queue<node>Q; int ktzk(string s)
{
int i,j,sum = ;
for(i = ; i<; i++)
{
int cnt = ;
for(j = i+; j<; j++)
if(s[i]>s[j])
cnt++;
sum+=cnt*hash[-i];
}
return sum;
}
void bfs()
{
node cur,now;
char t[];
int i,k;
memset(vis,false,sizeof(vis));
cur.c=start;
cur.step="";
cur.val=ktzk(start);
ans[cur.val]="";
vis[cur.val]=true;
Q.push(cur);
while(!Q.empty())
{
cur=Q.front();
Q.pop();
now=cur;//A
for(i=;i<=;i++) swap(now.c[i],now.c[-i]); k=ktzk(now.c);
if(vis[k]==false)
{
vis[k]=true;
now.step+='A';
now.val=k;
ans[k]=now.step;
Q.push(now);
}
now=cur;//B
for(i=;i<;i++) t[i]=now.c[i];
now.c[]=t[];
now.c[]=t[];
now.c[]=t[];
now.c[]=t[];
now.c[]=t[];
now.c[]=t[];
now.c[]=t[];
now.c[]=t[]; k=ktzk(now.c);
if(vis[k]==false)
{
vis[k]=true;
now.step+='B';
now.val=k;
ans[k]=now.step;
Q.push(now);
}
now=cur;
for(i=;i<;i++) t[i]=now.c[i];
now.c[]=t[];
now.c[]=t[];
now.c[]=t[];
now.c[]=t[];
k=ktzk(now.c);
if(vis[k]==false)
{
vis[k]=true;
now.step+='C';
now.val=k;
ans[k]=now.step;
Q.push(now);
}
}
}
int main()
{
char a[],b[],cur[];
string hxl;
int i,j,k;
for(i=;i<=;i++)
hash[i]=hash[i-]*i;
start="";
bfs(); while(scanf("%s%s",a,b)>)
{
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(a[i]==b[j])
{
cur[j]=''+i;
}
}
}
cur[]='\0';
hxl="";
for(i=;i<;i++)
hxl+=cur[i];
k=ktzk(hxl);
cout<< ans[k] <<endl;
}
return ;
}
hdu 1430的更多相关文章
- HDU 1430 魔板(康托展开+BFS+预处理)
魔板 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- hdu 1430+hdu 3567(预处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1430 思路:由于只是8种颜色,所以标号就无所谓了,对起始状态重新修改标号为 12345678,对目标状 ...
- HDU - 1430 魔板 【BFS + 康托展开 + 哈希】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1430 思路 我刚开始 想到的 就是 康托展开 但是这个题目是 多组输入 即使用 康托展开 也是会T的 ...
- hdu 1430 魔板 康托展开 + 很好的映射
http://acm.hdu.edu.cn/showproblem.php?pid=1430 如果从start ---> end,每一次都bfs进行,那么就肯定会超时. 考虑到先把start映射 ...
- HDU 1430 关系映射 + 打表 .
题意是中文的不解释.(http://acm.hdu.edu.cn/showproblem.php?pid=1430) 思路: 这个题目直接BFS会超时的(我一开始超时了) ,如果 ...
- hdu 1430 (BFS 康托展开 或 map )
第一眼看到这题就直接BFS爆搜,第一发爆了内存,傻逼了忘标记了,然后就改,咋标记呢. 然后想到用map函数,就8!个不同的排列,换成字符串用map标记.然后又交一发果断超时,伤心,最恨超时,还不如来个 ...
- hdu 1430 魔板 (BFS+预处理)
Problem - 1430 跟八数码相似的一题搜索题.做法可以是双向BFS或者预处理从"12345678"开始可以到达的所有状态,然后等价转换过去直接回溯路径即可. 代码如下: ...
- hdu.1430.魔板(bfs + 康托展开)
魔板 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- [HDU 1430] 魔板
魔板 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- HDU - 1430 魔板 (bfs预处理 + 康托)
对于该题可以直接预处理初始状态[0, 1, 2, 3, 4, 5, 6, 7]所有可以到达的状态,保存到达的路径,直接打印答案即可. 关于此处的状态转换:假设有初始状态为2,3,4,5,0,6,7,1 ...
随机推荐
- Day 62 Django第三天
2.GET请求能够被cache,GET请求能够被保存在浏览器的浏览历史里面(密码等重要数据GET提交,别人查看历史记录,就可以直接看到这些私密数据)POST不进行缓存. 3.GET参数是带在URL后面 ...
- 简单版nginx lua 完成定向流量分发策略
本文链接:https://www.cnblogs.com/zhenghongxin/p/9131362.html 公司业务前端是使用 “分发层+应用层” 双层nginx架构,目的是为了提高缓存的命中率 ...
- 图片后门恶意捆绑工具FackImageexploer
本文作者:夜莺 今天向大家提个醒,最近有一款工具名叫FackImageexploer,该工具能够将恶意的.bat和.exe程序与图片绑定在一起,假若受害者点击了图片,就会反弹个shell给不法分子,如 ...
- Weblogic有免费的License了
分类: 系统运维 曾几何时, 为了找一个不限IP, 不限CPU, 不限时间的Weblogic License, 需要翻遍整个互联网, 这种日子一去不复返了~~~~~ 几个月前, 听到Oracle收购B ...
- Oracle性能问题sql调优脚本集
---------------------------------------------------------------------------------------------------- ...
- window本地运行mapreduce程序
mapreduce的运行方式一般有两种,一是从本地导出一个jar包,在传到虚拟机上运行,这样调试起来非常的不方便,如果出现错误就需要重新导出jar包. 第二种方式是在本地直接运行,但是在运行前需要进行 ...
- Django中url的反向查询
明确几个概念: application namespace: 正在部署的app的名称,一个app的多个实例应该具有相同的application namespace. 可以通过在URLconf模 ...
- Css权重解析
Css权重解析 关于CSS权重,我们需要一套计算公式来去计算,这个就是 CSS Specificity,我们称为CSS 特性或称非凡性,它是一个衡量CSS值优先级的一个标准 具体规范入如下: spec ...
- Win7 Eclipse调试Centos Hadoop2.2-Mapreduce(转)
一. 自己搭建开发环境 今天自己搭建了一套Centos5.3 + Hadoop2.2 + Hbase0.96.1.1的开发环境,Win7 Eclipse调试MapReduce成功.可能是版本比较高的原 ...
- scss 入门
scss 入门 1. scss 引入其他文件 引入其他 .scss 文件 @import 'index.scss' 这样的话,文件在编译后,会自动把引入的文件和当前文件合并为一个. scss 文件 引 ...