hdu1813 IDA* 好高端的样子。。。
来源:互联网 发布:造价员网络培训 编辑:程序博客网 时间:2024/05/16 18:31
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>using namespace std;struct st{ st *pre; int a;}*p1;struct point{ int x,y; point(){} point(int a,int b){x=a;y=b;}}p[40];int m[9][9],h[9][9],n,al,pos[4][2]={{0,1},{-1,0},{1,0},{0,-1}};int maxf,nextmaxf,step;char *ans[]={"east","north","south","west"};inline bool inm(point a){ return (a.x>0 && a.x<n-1 && a.y>0 && a.y<n-1);}void init(point a,int x){ if(!inm(a)) return; if(m[a.x][a.y] || h[a.x][a.y]<=x) return; h[a.x][a.y]=x; int i; for(i=0;i<4;i++) init(point(a.x+pos[i][0],a.y+pos[i][1]),x+1);}void init(){ int i; for(i=0;i<n;i++) for(int j=0;j<n;j++) h[i][j]=0xfffffff; for(i=0;i<n;i++) { if(m[i][0]==0 && m[i][1]==0) init(point(i,1),1); if(m[0][i]==0 && m[1][i]==0) init(point(1,i),1); if(m[i][n-1]==0 && m[i][n-2]==0) init(point(i,n-2),1); if(m[n-1][i]==0 && m[n-2][i]==0) init(point(n-2,i),1); h[i][0]=h[0][i]=h[i][n-1]=h[n-1][i]=0; }}int hh(){ int i,ans=0; for(i=0;i<al;i++) ans=max(ans,h[p[i].x][p[i].y]); return ans;}bool dfs(st *pp){ int i,j,f=step+hh(); if(f>maxf) { nextmaxf=min(nextmaxf,f); return 0; } if(hh()==0) {p1=pp;return 1;} step++; point po[40]; for(i=0;i<4;i++) { memcpy(po,p,sizeof(p)); for(j=0;j<al;j++) if(inm(p[j])) { int x,y; x=p[j].x+pos[i][0]; y=p[j].y+pos[i][1]; if(m[x][y]==0) p[j]=point(x,y); } p1=new st; p1->a=i; p1->pre=pp; if(dfs(p1)) return 1; memcpy(p,po,sizeof(p)); } step--; return 0;}void print(st *pp){ if(!pp) return; print(pp->pre); cout<<ans[pp->a]<<endl;}int main(){ char c; int pri=0; while(cin>>n) { int i,j; al=0; for(i=0;i<n;i++) for(j=0;j<n;j++) { cin>>c; m[i][j]=c-'0'; if(inm(point(i,j)) && m[i][j]==0) p[al++]=point(i,j); } if(n<=2) { if(pri) cout<<endl; pri=1; continue; } init(); maxf=hh(); nextmaxf=0xfffffff; p1=NULL; step=0; while(!dfs(p1)) { maxf=nextmaxf; nextmaxf=0xfffffff; p1=NULL; } if(pri) cout<<endl; pri=1; print(p1); } return 0;}
0 0
- hdu1813 IDA* 好高端的样子。。。
- hdu1813---IDA*
- hdu1813 IDA*算法
- HDU1813:Escape from Tetris(IDA)
- hdu1813 Escape from Tetris (IDA*)
- #HDU1813#Escape from Tetris(IDA*_搜索)
- hdu1813
- 好的反编译工具(IDA pro)
- 一个好的人力资源部门应该是什么样子的?
- 好的软件测试人员简历是什么样子的?
- Winpython 和 Spyder (好用的Python的IDA)
- 第一次写博客,怎么办,好紧张,怎么样才能显得我经常写的样子。
- 虽然不明白在说什么,但是感觉好厉害的样子
- 教授的样子
- 有点灰心的样子
- 梦想你的样子
- 最初的样子
- 教授的样子
- 代码隐藏 软键盘
- Android NDK学习(4)使用cygwin生成.so库文件
- Cell 的增删和移动
- 求两直线交点
- c++中函数与指向函数的指针
- hdu1813 IDA* 好高端的样子。。。
- 个地方进口货孤苦伶仃烦死了
- IOS越狱开发 root权限获取
- myeclipse 10 安装svn插件
- snmp监控命令
- 苹果CEO库克:下代iPhone6量产蓝宝石屏
- Android NDK学习(5)调用.so文件
- Effective C++读书笔记(12)
- iOS、Android、WebOS系统体系架构的比较