题目描述
迷宫由n行m列的单元格组成(n和m都小于等于5),每个单元格要么是空地,要么是障碍物。你的任务是帮助找到一条从迷宫的起点通往小A所在位置的最短路径。注意障碍物是不能走的,当然也不能走到迷宫之外。
输入
第一行两个数n和m,n表示行,m表示列;
接下来的n行m列为迷宫,0表示空地,1表示障碍物
最后一行4个数,前两个为入口x和y坐标,后两个是小A的x和y坐标。
输出
营救小A的最短路径长度
样例输入输出
样例输入 #1
5 4 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 4 3
样例输出 #1
7
分析
水题,掌握题意即可
代码
#include<stdio.h>
int n,m,p,q,min=99999999;
int a[51][51],book[51][51];
void dfs(int x,int y,int step){
int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int tx,ty,k;
if(x==p&&y==q) {
if(step<min){
min=step;
}
return ;
}
for(k=0;k<=3;k++){
tx=x+next[k][0];
ty=y+next[k][1];
if(tx<1||tx>n||ty<1||ty>m){
continue;
}
if(a[tx][ty]==0&&book[tx][ty]==0) {
book[tx][ty]=1;
dfs(tx,ty,step+1);
book[tx][ty]=0;
}
}
return ;
}
int main(){
int i,j,startx,starty;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
scanf("%d %d %d %d",&startx,&starty,&p,&q);
book[startx][starty]=1;
dfs(startx,starty,0);
printf("%d",min);
getchar();
getchar();
return 0;
}
拓展(复习):字符串
转载于 天喜Studio 的原创文章
原文链接:https://blog.csdn.net/TiSg0/article/details/130519597
一、字符、字符数组
字符char知识点:字符类型详解
每个我们看见的字符影像都有自己的影响编码,每个字符对应着各自的影响编码(ASCII码)
根据ASCII码,每个字符都有其各自的数字编码,通过使用数字编码即可打印出对应的字符影像
对于一个字符输出其%d格式为其数字编码,输出%c格式就是其字符影像
二、字符串
通过数组的方式定义字符串太过麻烦,我们可以直接用一个双引号代表字符串。
不喜勿喷,这篇比较简短