10085UVA最远的状态
来源:互联网 发布:淘宝衣服纯色背景 编辑:程序博客网 时间:2024/06/11 04:14
也是和例题几乎一样~
#include<stdio.h>#include<string.h>typedef int State[9];const int maxstate=1000000;const int dx[]={-1,1,0,0};const int dy[]={0,0,1,-1};char dir[]={'U','D','R','L'};State que[maxstate];int fa[maxstate];int op[maxstate];const int maxhash = 100000;int next[maxstate];int head[maxhash];int hash(State& s){int v=0;for(int i=0;i < 9;i++){v=v*10+s[i];}return v%maxhash;}bool tryinsert(int id) //id in que{int h=hash(que[id]);int u=head[h];while(u){if(0==memcmp(&que[u],&que[id],sizeof(State)))return false;u=next[u];}next[id]=head[h];head[h]=id;return true;}int bfs() //return pos in que{//initialize head array to store pos in quememset(head,0,sizeof(head));int front,rear;front=1,rear=2;while(front<rear){State& s= que[front]; //take a 'state' outint x,y,z;for(z=0; z<9;z++)if(!s[z])break;x = z/3;y = z%3;int nx,ny,nz;for(int i=0;i < 4;i++){nx=x+dx[i];ny=y+dy[i];if(nx>=0 && ny>=0 && nx<3 && ny<3){nz=nx*3+ny;State& t=que[rear];memcpy(&t,&s,sizeof(State));t[nz]=s[z];t[z]=s[nz];fa[rear]=front;op[rear]=i;if(tryinsert(rear))rear++;}}front++;////printf("~%d %d\n",front,rear);}return front-1;}void print(int id){if(fa[id]!=id){print(fa[id]);putchar(dir[op[id]]);}}int main(){//freopen("input.txt","r",stdin);freopen("out.txt","w",stdout);int t;scanf("%d",&t);for(int numcase=1;numcase <= t;numcase++){memset(fa,0,sizeof(fa));memset(op,0,sizeof(op));for(int i=0;i < 9;i++){scanf("%d",&que[1][i]);}fa[1]=1;op[1]=0;int end=bfs();printf("Puzzle #%d\n",numcase);for(int i=0;i<3;i++){printf("%d",que[end][i*3]);for(int j=1;j<3;j++){printf(" %d",que[end][i*3+j]);}putchar(10);}print(end);putchar(10);}}
0 0
- 10085UVA最远的状态
- 世界上最远的距离
- 世界上最远的距离
- 《世界上最远的距离》
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- 世界上最远的距离
- unity给ugui添加collider时让collider自适应
- Ubuntu16安装flash插件
- [51nod1411] 矩阵取数问题 V3
- 日语语法-01
- 利用dbutils实现登录实例
- 10085UVA最远的状态
- 设计模式 命令模式 之 管理智能家电
- 文本形式 、二进制形式保存π
- WebService接口开发
- linux xxx/xx: 只读文件系统
- Java IO字符流常见类进行分析(四)
- 设计模式 适配器模式 以手机充电器为例
- 深度优先算法学习 案例
- 了解linux的目录结构(ubuntu)