注释比 Tian 写的还好,看我!!
2025-08-16 17:29:18
发布于:广东
8阅读
0回复
0点赞
比 Tian 更详细的注释
#include<iostream>
using namespace std;
int dx[4] = {-1,1,0,0};
int dy[4] = {0,0,-1,1};//方向数组
int n,m,t;//规格和障碍
int sx,sy,fx,fy;//起点和终点
int mp[10][10] = {0};//地图模拟
int cnt = 0;//计数
int x,y = 0;
bool vis[10][10] = {0};
bool check(int nx,int ny){
//不能越界 不能是已走过 不能障碍
if(nx <= n && nx >= 1 && ny <= m && ny >= 1 && vis[nx][ny] == 0 && mp[nx][ny] != 1){
return 1;
}
else{
return 0;
}
}
//深搜
void dfs(int x,int y){
vis[x][y] = 1;//标记
if(x == fx && y == fy){//到达一次终点
cnt++;//计数器加一
return;
}
//找下一个方向
for(int i = 0; i<4; i++){
int nx = x+dx[i]; //下一个点的坐标
int ny = y +dy [i];//同上
//if判断能否走
if(check(nx,ny) == 1){
vis[nx][ny] = 1;//判断成功,走,标记vis ps:放在return 后面,不然会重置vis标记消失
//Tian刚开始就是这样错的,还导致他欠了奶茶😂
dfs(nx,ny);//dfs递归,继续走
vis[nx][ny] = 0;//走完后回溯
}
}
}
int main() {
cin>>n>>m>>t;
cin>>sx>>sy>>fx>>fy;
for(int i = 1 ; i <= t; i ++ ) {
cin>>x>>y;//这里输入后直接标记,不用数组
//默认全是空地,全 0 ,对障碍物进行标记 1
mp[x][y] = 1;
}
dfs(sx,sy);//从起点开始搜索
cout<<cnt;//输出计数器(题目要求的到达终点的方式
return 0;
}
全部评论 3
抄的
2025-08-17 来自 广东
0的确有一些注释是借鉴了Tian的题解,主要是有更丰富的扩展
2025-08-17 来自 广东
0听说你个假Tian天天骂人啊
2025-08-17 来自 广东
0
2025-08-16 来自 广东
0顶
2025-08-16 来自 广东
0
有帮助,赞一个