首页 > 其他分享 >P1605 迷宫 (对坐标dfs)

P1605 迷宫 (对坐标dfs)

时间:2024-03-27 19:30:08浏览次数:22  
标签:vis int 迷宫 dfs nx ny xx include P1605

写在前面:

        我可太牛了!第一次写就能得70分!信心倍增!

        OMG!五分钟找出漏洞,我真是太棒啦!

        这道题要注意,一定要将初始起点坐标状态设为true!

题目:

代码:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cmath>
using namespace std;

int n,m;
int sx,sy,ex,ey;
int t;
char mp[10][10] = {'.'};
bool vis[10][10];
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
int cnt;

void dfs(int xx,int yy){
	if(xx == ex && yy == ey){
		cnt++;
		return ;
	}
	
	for(int i=0;i<4;i++){
		int nx = xx + dx[i];
		int ny = yy + dy[i];
		
		if(vis[nx][ny]) continue;
		if(!vis[nx][ny] && mp[nx][ny] == '.'){
		vis[nx][ny] = true;
		dfs(nx,ny);
		vis[nx][ny] = false;
	}
	}
	return ;
}
int main()
{
	scanf("%d%d%d",&n,&m,&t);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			mp[i][j] = '.';
		}
	}
	scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
	while(t--){
		int x,y;
		scanf("%d%d",&x,&y);
		mp[x][y] = '#';
	}
	dfs(sx,sy);
	printf("%d",cnt);
	return 0;
}

结果:

AC代码:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cmath>
using namespace std;

int n,m;
int sx,sy,ex,ey;
int t;
char mp[20][20] = {'.'};
bool vis[20][20];
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
int cnt;

void dfs(int xx,int yy){
	vis[xx][yy] = true;
	if(xx == ex && yy == ey){
		cnt++;
		return ;
	}
	
	for(int i=0;i<4;i++){
		int nx = xx + dx[i];
		int ny = yy + dy[i];
		
		if(vis[nx][ny]) continue;
		if(nx <= 0 || nx > n || ny <= 0 || ny > m) continue;
		if(mp[nx][ny] == '#') continue;
		if(!vis[nx][ny] && mp[nx][ny] == '.'){
		vis[nx][ny] = true;
		dfs(nx,ny);
		vis[nx][ny] = false;
	}
	}
	return ;
}
int main()
{
	scanf("%d%d%d",&n,&m,&t);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			mp[i][j] = '.';
		}
	}
	scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
	while(t--){
		int x,y;
		scanf("%d%d",&x,&y);
		mp[x][y] = '#';
	}
	dfs(sx,sy);
	printf("%d",cnt);
	return 0;
}

结果:!!!!

标签:vis,int,迷宫,dfs,nx,ny,xx,include,P1605
From: https://blog.csdn.net/2401_82736456/article/details/137078024

相关文章

  • 数据结构--利用栈解决迷宫问题
    目录一简介二代码实现一简介迷宫问题通常可以用深度优先搜索(DFS)或者广度优先搜索(BFS)算法解决,这两种算法都可以结合栈来实现。二代码实现下面以深度优先搜索为例,演示如何使用C语言和栈来解决迷宫问题。首先,我们需要定义迷宫和路径的状态,假设迷宫用二维数组表示,其......
  • [蓝桥杯 2013 国 C] 危险系数 dfs 深搜 递归
    ##题目背景抗日战争时期,冀中平原的地道战曾发挥重要作用。##题目描述地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。我们来定义一个危险系数$DF(x,y)$:对于两个站点$x$和$y(x\neqy),$如果能找到一......
  • HDFS原理介绍
    1.分布式分布式存储解决了单机存储容量有限的问题,且带来了比较高的性能提升.例如:3台服务器,就是3倍的传输效率,读写效率...横向扩展=加机器, 纵向扩展=加配置(硬件)2.架构  namenode:主节点.    1.管理整个HDFS集群.    2.维护和管......
  • 十一 2060. 奶牛选美 (DFS)
    十一2060.奶牛选美(DFS)思路:使用dfs找出两个相邻的斑点,搜索过的点改为'.'防止重复统计,然后依次遍历两个斑点内的点,找出最小曼哈顿距离。importjava.util.*;publicclassMain{staticintn,m;staticchar[][]g;staticList<int[]>[]points=newAr......
  • Hadoop:HDFS配置与基本命令
    接上篇Hadoop的单机布署,接下来准备以单机的形式体验一把HDFS。 写在前而,我本机hadoop的根目录是/hadoop/hadoop-2.10.2,请各位读者根据实际情况辨别各自的路径。第一步,修改配置文件/hadoop/hadoop-2.10.2/etc/hadoop/core-site.xml<configuration><property>......
  • 迷宫与陷阱(蓝桥杯)
    文章目录迷宫与陷阱问题描述bfs迷宫与陷阱问题描述小明在玩一款迷宫游戏,在游戏中他要控制自己的角色离开一间由NxN个格子组成的2D迷宫。小明的起始位置在左上角,他需要到达右下角的格子才能离开迷宫,每一步,他可以移动到上下左右相邻的格子中。迷宫中有些格子小......
  • C++ | 剪枝(DFS)lanqiao OJ 2942
     上一篇我们已经分享了DFS的学习,剪枝相当于对部分DFS进行优化正常用DFS写,会遍历每一种情况,因此要判断他的合法性,并且在第十个检测点会超时,用剪枝后,这道题就可以过啦。//不剪枝的方法#include<bits/stdc++.h>usingnamespacestd;constintN=15;inta[N],n;v......
  • 登山小分队(dfs,模拟)
    原题链接:题目描述Foxity和他的好友们相约去爬山,但是他们每个人都来到了不同的山脚下。整个山的结构类似一棵"树",有很多的观光节点通过一条条山道连接起来。在图论中,树是一种无向图,其中任意两个顶点之间存在唯一一条路径。或者说,只要没有回路的连通图就是树。这个问题中,我们......
  • 字母迷宫题解
    思路:看到这题一眼跑广搜,但是转眼天堂之门,欸为什么要加2?好像没法广搜(不满足广搜特性),咋办?凉拌。该怎么让它满足广搜特性(先搜到的是最优的)。欸,我们是不是可以将队列换成优先队列让先搜到的最优。好像是的欸,优先队列启动!代码:#include<bits/stdc++.h>usingnamespacestd;inta......
  • DFS求解连通块问题
    DFS求解连通块问题#include<bits/stdc++.h>usingnamespacestd;charg[35][65];intvis[35][65],num,res;intdx[]={0,1,0,-1},dy[]={1,0,-1,0};voiddfs(intx,inty){if(x<1||x>30||y<1||y>60||g[x][y]=='0'||vis[x][y])return;vis[x][......