很早之前做过,总结一下康拓展开哈希大法。当初要是懂了这玩意北京网赛那题一定能出....

http://acm.hdu.edu.cn/showproblem.php?pid=1043题目链接

http://m.blog.csdn.net/blog/lx417147512/24798653在这里看的方法

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn=1000008;
int md[12];
void init()
{int i,j;md[0]=1;for(i=1;i<=8;i++){int ans=1;for(j=1;j<=i;j++)ans*=j;md[i]=ans;}
}
int cator(int a[],int n)
{int i,j,k;int ans=0;for(i=1;i<=n;i++){k=0;for(j=i+1;j<=n;j++)if(a[i]>a[j])k++;ans+=k*md[n-i];}return ans;
}
void fuckcator(int ha,int n,int a[])
{int i,j,t;bool vis[11];memset(vis,false,sizeof(vis));for(i=1;i<=n;i++){t=ha/md[n-i];for(j=1;j<=n;j++)if(!vis[j]){if(t==0) break;--t;}a[i]=j;vis[j]=true;ha%=md[n-i];}
}
int pre[maxn];
char shit[maxn];
int dir[4][2]={1,0,0,1,-1,0,0,-1};
char d[5]={'u','l','d','r'};
bool judge(int x)
{if(x>=0&&x<3)return true;return false;
}
void bfs()
{queue<int>   q;int a[11],i;for(i=1;i<=8;i++)  a[i]=i;a[9]=0;int ha=cator(a,9);int nha,x,y,nx,ny,pos,npos;q.push(ha);pre[ha]=ha;shit[ha]='\n';while(!q.empty()){ha=q.front();q.pop();fuckcator(ha,9,a);for(i=1;i<=9;i++)    if(a[i]==1)   pos=i-1;y=pos%3;x=pos/3;for(i=0;i<4;i++){nx=x+dir[i][0];ny=y+dir[i][1];if(judge(nx)&&judge(ny)){npos=nx*3+ny;swap(a[pos+1],a[npos+1]);nha=cator(a,9);swap(a[pos+1],a[npos+1]);if(pre[nha]!=-1) continue;q.push(nha);pre[nha]=ha;shit[nha]=d[i];}}}
}
int main()
{int i,j,k,n,ha;int a[11],b[11];char s[100];init();memset(pre,-1,sizeof(pre));bfs();while(gets(s)){int j=1;for(i=0;s[i]!='\0';i++){if(s[i]>='1'&&s[i]<='8')a[j++]=s[i]-'0';else if(s[i]=='x')a[j++]=0;}ha=cator(a,9);if(pre[ha]==ha)  printf("lr\n");else if(pre[ha]==-1) printf("unsolvable\n");else{for(i=ha;i!=pre[i];i=pre[i])printf("%c",shit[i]);printf("\n");}}return 0;
}

转载于:https://www.cnblogs.com/bitch1319453/p/4847262.html

hdu 1043 Eight 搜索,哈希相关推荐

  1. hdu 1043 Eight 经典八数码问题

    hdu 1043 Eight 经典八数码问题 题意描述:给出一个3×3的矩阵(包含1-8数字和一个字母x),经过一些移动格子上的数后得到连续的1-8,最后一格是x,要求最小移动步数. 算法分析:经典的 ...

  2. HDU 1043 Eight(八数码)

    HDU 1043 Eight(八数码) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  3. Eight HDU - 1043

    Eight HDU - 1043 题意:给定一个3*3的方阵,要求通过交换x方格与其相邻方格位置的方式,使方阵上的数字由小到大排列,且x在右下角.输出具体交换步骤

  4. 相似图片搜索--哈希特征值

    文章目录 相似图片搜索--哈希特征值 简介 思路 实现方法 从文件夹读取图片 压缩图片 色彩处理 计算哈希值 比较哈希值 参考资料 相似图片搜索–哈希特征值 简介 搜索方法是计算出每一个图片的特征值, ...

  5. Eight HDU - 1043(八数码+搜索)

    题意: 就是还原八数码.输出操作. 题目: The 15-puzzle has been around for over 100 years; even if you don't know it by ...

  6. HDU - 1043 Eight (A*搜索)

    A*模板 可以发现无论怎么动x逆序对奇偶性不变,可用这个性质判unsolve 状态判重可用康托展开 估价函数h(n)的求法为计算图上每一个点到目标的曼哈顿距离之和 1 #include<cmat ...

  7. HDU 1043 Eight(八数码第七境界|A*+哈希+曼哈顿距离)

    题意:八数码. 思路:将上一篇博客的估计函数h更改为求当前状态到目标状态的曼哈顿距离,因为每次都是和空格交换,所以计算的时候不计算空格的曼哈顿距离就可以满足估计函数的两条性质: 1.h(n)>h ...

  8. HDU 1043 Eight(双向BFS+康托展开)

    http://acm.hdu.edu.cn/showproblem.php?pid=1043 题意:给出一个八数码,求出到达指定状态的路径. 思路:路径寻找问题.在这道题里用到的知识点挺多的.第一次用 ...

  9. hdu 1043 ,pku 1077 Eight ,八数码问题

    某位神牛曾说过,此题是涉及到人生完不完整的一道题.. Goodness大牛曾总结了 八数码的八重境界 : http://www.cnblogs.com/goodness/archive/2010/05 ...

最新文章

  1. Matlab与数据结构 -- 对矩阵的排序
  2. 南方科技大学唐圆圆组招聘环境相关领域科研人才(年薪33~50万)
  3. C语言基础-简单程序分析
  4. CentOS7 Change the Sources of yum(刚装完centos后一定要干的事)
  5. python一个函数调用另一个函数_在Python中将函数作为另一个函数的参数传入并调用的方法...
  6. iPhone 13 Pro原型机曝光:全新玫瑰金配色,女性首选
  7. 给mysql salve从库复制授权_MySQL主从复制
  8. Zend Studio12.0配置Xdebug
  9. Flutter跨组件共享状态的利器Provider原理解析
  10. [翻译]Popfly系列课程7 –深入幕后:使用 Popfly学习XML的初学者指南
  11. PHP住院收费系统管理,住院收费管理系统
  12. 性能测试-性能狗(Perfdog)测试与数据分析
  13. Java异或运算和校验
  14. 修改服务器域名解析,总结修改Godaddy解析服务器(DNS)三步骤
  15. 计算机组和用户组,计算机管理没有本地用户和组怎么办
  16. html dwt怎样制作,将HTML文件制作成ecshop的dwt模板(二)建立公共类库1
  17. yun之梦 酒仙wang 实战 带源码
  18. 原生Js弹窗插件|web弹出层组件|对话框
  19. c++ placement new
  20. python背景颜色代码大全_python3中布局背景颜色代码分析

热门文章

  1. css中调整高度充满_CSS(十三).高度如何铺满全屏
  2. 十个隐藏_LOL手游:新版增加42个英雄,大白兔:10个隐藏T0角色
  3. 2021年春季学期-信号与系统-第十一次作业参考答案-第九小题
  4. 2021年春季学期-信号与系统-第十一次作业参考答案-第三小题
  5. 2021年春季学期-信号与系统-第八次作业参考答案-第三小题
  6. 带你认识清华标杆课教师 | 卓晴:自带BGM的硬核“技术流”教师
  7. 利用MATLAB帮助求解作业中的Laplace变换和Z变换
  8. 为什么我们不愿意读论文,原来都是作者害的
  9. 联想win10摁F2一直无法进入BIOS
  10. pb数据窗口显示图片_PowerPhotos帮助你再Mac系统上更好,更快的管理自己的图片...