竞赛
考级
哒烧叶
#include<iostream> using namespace std; int n,m,x,y; int main(){ scanf("%d%d%d%d",&n,&m,&x,&y); 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"); return 0; }
龘龘利亚
#include <bits/stdc++.h> using namespace std; int n,m,x,y; int a[1001][1001]; int dx[]={0,1,0,-1}; int dy[]={1,0,-1,0}; int main() { cin>>n>>m>>x>>y; for(int i=0;i<4;i++) { int nx=dx[i]+x; int ny=dy[i]+y; if(nx<=0 or ny<=0 or nx>n or ny>m) { cout<<"NA"<<endl; }
对方正在输入...
这个问题实际上是在考察你对二维数组的理解以及如何在边界条件下安全地访问数组元素。 第一步:理解题目要求 题目要求你找到一个点 (x, y) 在一个 n 行 m 列的网格中的四个邻居(上、下、左、右)。并且输出顺序是右、下、左、上。如果邻居点超出网格边界,则输出“NA”。 第二步:设计算法 定义变量:首先,你需要确定如何存储和表示这个网格的信息。由于题目只给了单个点的坐标,并没有给出整个网格的具体内容,我们不需要实际创建一个完整的二维数组来代表网格,只需要根据坐标进行计算即可。 边界条件判断:对于每个方向(右、下、左、上),你需要检查新的坐标是否仍然在网格内。例如,向右移动时,新坐标为 (x, y+1),但只有当 y+1 <= m 时,这个坐标才是有效的。 输出处理:对于每个有效的新坐标,输出该坐标;对于无效坐标,输出 “NA”。 第三步:编码实现 使用输入的 n, m, x, y 来确定网格的大小和点的位置。 对于每个方向,计算新坐标,检查是否越界,然后输出结果或 "NA"。 第四步:调试与测试 编写代码后,使用题目给出的样例数据进行测试,确保你的程序能够正确处理边界情况。 尝试自己构造一些边界案例(比如 (x, y) 在网格的角落或边缘),检查程序是否能够正确处理。 第五步:优化与反思 反思你的解决方案,是否有更简洁或更高效的方法来实现?比如,是否可以减少重复的边界检查代码? 考虑到这是一个基础问题,思考如何将这种二维坐标处理的技巧应用到更复杂的场景中。
ddxdd
acgoacgo
#include <iostream> using namespace std; int main() { int n, m, x, y; cin >> n >> m >> x >> y; }
我是垃圾
迷宫的前置题
四斋臻瞎投
LR400BF-5033
回到题目 思路 这道题是在考察迷宫类的深度优先搜索的搜索条件,简单来说就是考察你的分支结构。 根据题目给的输出可以得出输出的顺序是右->下->左->上。 在由题意得出判断条件右:y+1<=m,下:x+1<=n,左:y-1>=1,右:x-1>=1。 使用最常见的分支结构:if-else。 其实还有一种简便的写法。 观察可以发现,判断只有真或假这两个,所以可以使用三目运算符。 全部AC了。
小柴
#include<iostream> using namespace std; //1.定义方向数组 int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; int n,m,x,y; bool inmap(int x,int y){ //n==2,m=3 //x=1,y=2 return x>=1 && x<=n && y>=1 && y<=m; } int main(){ cin>>n>>m>>x>>y; //2.for循环遍历方向数组 for(int i=0;i<4;i++){ //dir[i]选出哪个方向,0和1选出x或y int nx=x+dir[i][0],ny=y+dir[i][1];//(nx,ny)是(x,y)的邻居位置 if(inmap(nx,ny)){ cout<<nx<<' '<<ny<<endl; }else{ cout<<"NA"<<endl; } } return 0; }
T-T
Solw327
这个题目其实非常简单,也用不到什么深度优先搜索,我这边的方法不是深度优先搜索,直接判断即可。 但是我要强调一下我的题解仅供学习参考交流,不要复制然后不思考做题,这样是没有意义的在洛谷也是违规的。希望大家看了我的题解能有帮助:
Longzhen Chen
#include<bits/stdc++.h> using namespace std; int dx[4]={0,1,0,-1}; int dy[4]={1,0,-1,0}; int main(){ int n,m; int x,y; cin>>n>>m>>x>>y; for(int i=0;i<4;i++){ int xx=x+dx[i]; int yy=y+dy[i]; if(xx>=1 && xx<=n && yy>=1 && yy<=m){ cout<<xx<<" "<<yy<<endl; } else cout<<"NA"<<endl; } return 0; }
问问老师
戚文谨
xerography
加为1,减为-1,不做为0
Dimoo
6.