poj 3984 迷宫问题
来源:互联网 发布:开淘宝网店没有销量 编辑:程序博客网 时间:2024/05/19 03:24
简单的bfs。。
#include<stdio.h>#include<string.h>int map[10][10];struct sb{ int x; int y;}fathernode[10][10];int move[4][2]={{1,0},{-1,0},{0,1},{0,-1}};int queue[30];int way[10][10];void bfs(){ int front=0; int end=0; queue[end++]=4; queue[end++]=4; memset(way,-1,sizeof(way)); way[4][4]=1; while(front!=end) { int oldx=queue[front++]; int oldy=queue[front++]; for(int i=0;i<4;i++) { int newx=oldx+move[i][0]; int newy=oldy+move[i][1]; if(newy>=0&&newy<5&&newx>=0&&newx<5&&map[newx][newy]==0&&way[newx][newy]==-1) { fathernode[newx][newy].x=oldx; fathernode[newx][newy].y=oldy; if(newx==0&&newy==0) return ; way[newx][newy]=1; queue[end++]=newx; queue[end++]=newy; } } }}int main(){ int i,j; for(i=0;i<5;i++) for(j=0;j<5;j++) { scanf("%d",&map[i][j]); } fathernode[4][4].x=-1; fathernode[4][4].y=-1; bfs(); printf("(0, 0)\n"); int startx=0; int starty=0; while(fathernode[startx][starty].x!=-1&&fathernode[startx][starty].y!=-1) { printf("(%d, %d)\n",fathernode[startx][starty].x,fathernode[startx][starty].y); int startx1=fathernode[startx][starty].x; int starty1=fathernode[startx][starty].y; startx=startx1; starty=starty1; } return 0;}
出答案的还有种方式是递推
#include<stdio.h>#include<string.h>struct node{ int x,y;}map2[10][10];void print(int x,int y){ if(x==1&&y==1) return ; print(map2[x][y].x,map2[x][y].y); printf("(%d, %d)\n",map2[x][y].x-1,map2[x][y].y-1);}int way[10][10];int queue[23333];int map[10][10];int front,end;int dir[4][2]={{1,0},{0,1},{0,-1},{-1,0}};int map1[10][10];void bfs(int x,int y){ int i; front=end=0; queue[end++]=x; queue[end++]=y; memset(map1,-1,sizeof(map1)); map2[0][0].x=-1; map2[0][0].y=-1; map1[0][0]=0; while(front!=end) { x=queue[front++]; y=queue[front++]; map1[x][y]=0; for(i=0;i<=4;i++) { int ex=dir[i][0]+x; int ey=dir[i][1]+y; if(ex<1||ex>5||ey<1||ey>5||map[ex][ey]==1||map1[ex][ey]!=-1) continue; queue[end++]=ex; queue[end++]=ey; map2[ex][ey].x=x; map2[ex][ey].y=y; } }}int main(){int i,j;for(i=1;i<=5;i++) for(j=1;j<=5;j++) scanf("%d",&map[i][j]);bfs(1,1);int x1=1,y1=1;print(5,5);printf("(4, 4)\n");return 0;}
0 0
- poj 3984 迷宫问题
- poj 3984 迷宫问题
- POJ-3984-迷宫问题
- Poj 3984 迷宫问题
- 迷宫问题 poj 3984
- poj 3984迷宫问题
- poj 3984 迷宫问题
- POJ-3984-迷宫问题
- poj 3984- 迷宫问题
- POJ 3984 迷宫问题
- poj 3984 迷宫问题
- poj 3984:迷宫问题
- POJ-3984-迷宫问题
- POJ 3984 迷宫问题
- poj 3984迷宫问题
- POJ 3984 迷宫问题
- POJ 3984 迷宫问题
- poj 3984 迷宫问题
- JSP九九乘法表打印和杨辉三角打印
- Linux线程调度策略与优先级(二)
- VLFeat-使用matlab版本计算HOG
- Java设计模式 工厂模式
- iOS-appStore已上线软件升级更新(创建iOS新版本和平台)教程
- poj 3984 迷宫问题
- 快速幂取模算法
- c++中的栈和队列
- Jmeter调试工具---Debug Sampler
- 代码大全第15章,使用条件语句
- eclipse常用快捷键
- 欢迎使用CSDN-markdown编辑器
- 解决fatal error C1859: “Debug\thread5.pch”意外的预编译头错误的方法
- spark_3:spark的基础