A7987.迷宫的相邻点 思路+代码
2024-11-07 18:54:08
发布于:江苏
7阅读
0回复
0点赞
回到题目
思路
这道题是在考察迷宫类的深度优先搜索的搜索条件,简单来说就是考察你的分支结构。
根据题目给的输出可以得出输出的顺序是右->下->左->上。
在由题意得出判断条件右:y+1<=m,下:x+1<=n,左:y-1>=1,右:x-1>=1。
使用最常见的分支结构:if-else。
//右->下->左->上
#include <cstdio>
using namespace std;
int n,m,x,y;
void dfs()
{
if (y+1<=m) printf("%d %d\n",x,y+1);
else printf("NA\n");
if (x+1<=n) printf("%d %d\n",x+1,y);
else printf("NA\n");
if (y-1>=1) printf("%d %d\n",x,y-1);
else printf("NA\n");
if (x-1>=1) printf("%d %d\n",x-1,y);
else printf("NA\n");
}
int main()
{
scanf("%d %d %d %d",&n,&m,&x,&y);
dfs();
return 0;
}
}
其实还有一种简便的写法。
观察可以发现,判断只有真或假这两个,所以可以使用三目运算符。
//右->下->左->上
#include <cstdio>
using namespace std;
int n,m,x,y;
void dfs()
{
(y+1<=m)?printf("%d %d\n",x,y+1):printf("NA\n");
(x+1<=n)?printf("%d %d\n",x+1,y):printf("NA\n");
(y-1>=1)?printf("%d %d\n",x,y-1):printf("NA\n");
(x-1>=1)?printf("%d %d\n",x-1,y):printf("NA\n");
}
int main()
{
scanf("%d %d %d %d",&n,&m,&x,&y);
dfs();
return 0;
}
全部AC了。
这里空空如也
有帮助,赞一个