算法练习-NOJ-1009-迷宫问题
来源:互联网 发布:nba2k17季后赛数据 编辑:程序博客网 时间:2024/04/30 10:46
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
给一个20×20的迷宫、起点坐标和终点坐标,问从起点是否能到达终点。
输入
多个测例。输入的第一行是一个整数n,表示测例的个数。接下来是n个测例,每个测例占21行,第一行四个整数x1,y1,x2,y2是起止点的位置(坐标从零开始),(x1,y1)是起点,(x2,y2)是终点。下面20行每行20个字符,’.’表示空格;’X’表示墙。
输出
每个测例的输出占一行,输出Yes或No。
输入样例
2
0 0 19 19
………………..
XXXXXXXXXXXXXXXXXXXX
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
………………..
0 0 19 19
………………..
XXXXXXXXXXXXXXXXXXX.
………………..
.XXXXXXXXXXXXXXXXXXX
………………..
XXXXXXXXXXXXXXXXXXX.
………………..
.XXXXXXXXXXXXXXXXXXX
………………..
XXXXXXXXXXXXXXXXXXX.
………………..
.XXXXXXXXXXXXXXXXXXX
………………..
XXXXXXXXXXXXXXXXXXX.
XXXXXXXXXXXXXXXXXXX.
XXXXXXXXXXXXXXXXXXX.
XXXXXXXXXXXXXXXXXXX.
………………..
.XXXXXXXXXXXXXXXXXXX
………………..
输出样例
No
Yes
#include<stdio.h>int move[4][2]={0,1,1,0,0,-1,-1,0};char ch[22][22];int xt,yt;int flag;void f(int x,int y){ int row=21; int column=21; int i; ch[x][y]='#'; for(i=0;i<4;i++){ x=x+move[i][0]; y=y+move[i][1]; if(ch[x][y]=='.'){ if(x==xt+1&&y==yt+1) {flag=1;return ; } f(x,y); } x=x-move[i][0]; y=y-move[i][1]; }}int main(void){ int x,y; int i,j; int n; scanf("%d",&n); while(n--){ scanf("%d%d%d%d",&x,&y,&xt,&yt); getchar(); flag=0; //初始化 for(i=0;i<=21;i++){ ch[i][0]='X'; ch[i][21]='X'; } for(i=0;i<=21;i++){ ch[0][i]='X'; ch[21][i]='X'; } //输入迷宫 for(i=1;i<=20;i++){ for(j=1;j<=20;j++) scanf("%c",&ch[i][j]); getchar(); } //调用函数 f(x+1,y+1); //打印 if(flag) printf("Yes\n"); else printf("No\n"); } return 0;}
- 算法练习-NOJ-1009-迷宫问题
- 算法练习-NOJ-1141-走迷宫
- noj算法设计——迷宫问题
- 算法练习-NOJ-1042-电子老鼠闯迷宫
- 算法练习-NOJ-1004-01背包问题
- 算法练习-NOJ-1005-装载问题
- 算法练习-NOJ-1007-8皇后问题
- 算法练习-NOJ-1008-素数环问题
- 算法练习-NOJ-1006-堡垒问题
- 算法练习-NOJ-1045-六数码问题
- 算法练习-NOJ-1043-跳马
- 算法练习-NOJ-1044-独轮车
- noj算法题——走迷宫
- 算法练习-NOJ-1001-二分查找
- 算法练习-NOJ-1002-归并排序
- 算法练习-NOJ-1003-快速排序
- 算法练习-NOJ-1046-防卫导弹
- 算法练习-NOJ-1243-循环赛日程表
- Java集合类
- 【One Day菜鸟到大鸟】MyBatis搭建环境
- QWidget与HWND的互相转换
- 剑指offer--从尾到头打印链表
- oracle事务
- 算法练习-NOJ-1009-迷宫问题
- 在最新的Xcode中创建Protocol和Category文件
- 黑马程序员-------------面向对象和类
- C++二叉树的实现
- c语言获取当前工作路径(转)
- bzoj 3672: [Noi2014]购票
- 算法练习-NOJ-1141-走迷宫
- 【Java并发编程】之十:使用wait/notify/notifyAll实现线程间通信的几点重要说明
- margin(0 auto)无法居中的原因