poj 2243 BFS搜索
来源:互联网 发布:办理网络诈骗司法解释 编辑:程序博客网 时间:2024/05/21 09:06
#include<cstdio>#include<cstring>#include<queue>using namespace std;typedef struct{ int px; int py; int dis;}node;queue<node>q;int main(){ char cx,cy; int a,b,i,j,x,y,m,n; bool map[9][9]; node tmp,s[85]; while(scanf("%c%d %c%d",&cx,&a,&cy,&b)!=EOF) { memset(map,0,sizeof(map)); memset(s,0,sizeof(s)); x=cx-'a';y=cy-'a'; s[i=0].px=x; s[0].py=a; s[0].dis=0; q.push(s[0]); tmp=s[0]; map[x][a]=1; //printf("x=%d a=%d\n",s[i=0].px,s[0].py=a); //printf("y=%c b=%d\n",cy,b); //printf("tempwaipx=%d waipy=%d\n",q.front().px,q.front().py); while(!q.empty()) { tmp=q.front();//printf("px=%d py=%d\n",tmp.px,tmp.py); //printf("neipx=%d neipy=%d\n",q.front().px,q.front().py); if(tmp.px==y&&tmp.py==b){printf("To get from %c%d to %c%d takes %d knight moves.\n",cx,a,cy,b,tmp.dis);break;} q.pop(); m=tmp.px; n=tmp.py; if(m+2<=7&&n+1<=8&&!map[m+2][n+1]){i++;s[i].px=m+2;s[i].py=n+1;map[m+2][n+1]=1;s[i].dis=tmp.dis+1;q.push(s[i]);} if(m+1<=7&&n+2<=8&&!map[m+1][n+2]){i++;s[i].px=m+1;s[i].py=n+2;map[m+1][n+2]=1;s[i].dis=tmp.dis+1;q.push(s[i]);} if(m-2>=0&&n+1<=8&&!map[m-2][n+1]){i++;s[i].px=m-2;s[i].py=n+1;map[m-2][n+1]=1;s[i].dis=tmp.dis+1;q.push(s[i]);} if(m+2<=7&&n-1>=1&&!map[m+2][n-1]){i++;s[i].px=m+2;s[i].py=n-1;map[m+2][n-1]=1;s[i].dis=tmp.dis+1;q.push(s[i]);} if(m-2>=0&&n-1>=1&&!map[m-2][n-1]){i++;s[i].px=m-2;s[i].py=n-1;map[m-2][n-1]=1;s[i].dis=tmp.dis+1;q.push(s[i]);} if(m+1<=7&&n-2>=1&&!map[m+1][n-2]){i++;s[i].px=m+1;s[i].py=n-2;map[m+1][n-2]=1;s[i].dis=tmp.dis+1;q.push(s[i]);} if(m-1>=0&&n+2<=8&&!map[m-1][n+2]){i++;s[i].px=m-1;s[i].py=n+2;map[m-1][n+2]=1;s[i].dis=tmp.dis+1;q.push(s[i]);} if(m-1>=0&&n-2>=1&&!map[m-1][n-2]){i++;s[i].px=m-1;s[i].py=n-2;map[m-1][n-2]=1;s[i].dis=tmp.dis+1;q.push(s[i]);} } while(!q.empty())q.pop(); getchar(); } return 0;}
总结
一、很失败的写代码经历,memset(map,0,sizeof(map));我写成memset(map,0,sizeof(0));调试了N久……
二、经验:
1、如果出现运行错误很可能是自己判断是否越界的地方出现问题
2、第一次运行对但第二次运行错误 有两种可能 一是第二次读入数据错误 二是没有清空第一次的
- poj 2243 BFS搜索
- poj 3414 搜索BFS
- poj 1915&&poj 2243 Knight Moves (bfs搜索)
- poj 3083 搜索 DFS,BFS
- poj 2251 简单搜索bfs
- poj 3278 简单搜索bfs
- POJ 3126广度搜索BFS
- POJ 3126-Prime Path 简单搜索 BFS
- POJ 3414-Pots 简单搜索 BFS
- POJ 3278 用队列实现BFS搜索
- POJ 2631 最长路搜索,BFS
- poj 1562 简单的BFS搜索
- POJ 3278(BFS-搜索范围)
- POJ 3414 Pots (BFS搜索题)
- POJ 1475 Pushing Boxes 搜索- 两重BFS
- poj 3126 Prime Path(bfs搜索)
- POJ 2329 (暴力+搜索bfs)
- (搜索,双向BFS)POJ.1915.Knight Moves
- linux c++ 招聘条件
- jQuery引用google地址外部文件(jquery 1.2.6至jquery1.7.2)
- C#实验将计算机加入域
- android中自定义属性的两种方法 .
- Android 禁止屏幕休眠和锁屏的方法
- poj 2243 BFS搜索
- KSM,UKSM,PKSM(1/2)
- 王菲离婚网友吐槽:贵圈真乱 汪峰最难过
- oracle 使用
- java到底是传值还是传引用
- linux PATH环境变量全解析
- linux打开pdf是乱码,解决方法
- 栈的基本操作
- hdu 2109(fighting hdu)