当前位置: 首页 > article >正文

迷宫问题(c++题解)

题目描述

设有一个 N*N(2<=N<10)方格的迷宫,入口和出口分别在左上角和右上角。迷宫格子中 分别放 0 和 1,0 表示可通,1 表示不能,入口和出口处肯定是 0。迷宫走的规则如下所示: 即从某点开始,有八个方向可走,前进方格中数字为 0 时表示可通过,为 1 时表示不可通过, 要另找路径。找出所有从入口(左上角)到出口(右上角)的路径(不能重复),输出路径总 数,如果无法到达,则输出 0。

输入格式

第一行:N 接下来是:N*N的迷宫

输出格式

输出路径总数,如果无法到达,则输出0。

样例

样例输入
复制3 
0 0 0
0 1 1
1 0 0 
样例输出
复制2

_____________________________________________________________________________

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

_____________________________________________________________________________

#include<bits/stdc++.h>
using namespace std;
int n,ans;
int a[10005][10005];
int f[9][9]={{0,1},{1,0},{-1,0},{0,-1},{1,1},{1,-1},{-1,-1},{-1,1}};
void DFS(int x,int y){
	if(x==1&&y==n){
		ans++;
		return ;
	}
	a[x][y]=true;
	for(int i=0;i<8;i++){
		int X=x+f[i][0],Y=y+f[i][1];
		if(a[X][Y]==false&&X>0&&Y>0&&X<=n&&Y<=n){
			DFS(X,Y);
		}
	}
	a[x][y]=false;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	DFS(1,1);
	cout<<ans;
}


http://www.kler.cn/a/274434.html

相关文章:

  • 海外外卖APP开发新方向:基于同城外卖系统源码的多元化解决方案
  • PCL点云库入门——PCL库中点云数据拓扑关系之K-D树(KDtree)
  • PostgreSql-学习06-libpq之同步命令处理
  • mybatis分页插件的使用
  • XMLHttpRequest接受chunked编码传输的HTTP Response时有问题
  • Task中的锁机制Lock使用
  • MQTT建立连接
  • 【C++】每日一题 219 最小栈
  • Leetcode 79. 单词搜索
  • 【进阶五】Python实现SDVRP(需求拆分)常见求解算法——自适应大邻域算法(ALNS)
  • 学习vue3第六节(vue3 中 computed watch watchEffect)
  • 有什么小程序适合个人开发?
  • Aigtek超声功率放大器产品介绍
  • 力扣1. 两数之和
  • 腾讯云服务器多少钱1个月?2024一个月收费阿济格IE吧
  • 数据结构:详解【顺序表】的实现
  • PlantUML Integration 编写短信服务类图
  • 深入挖掘C语言之——枚举
  • Redis数据结构对象中的对象共享、对象的空转时长
  • 【Godot4.2】2D导航01 - AStar2D及其使用方法
  • python企业编码管理的程序(附源码)
  • 微信小程序接口请求出错:request:fail url not in domain list:xxxxx
  • 代码随想录算法训练营第53天 | 1143.最长公共子序列 ,1035.不相交的线 ,53. 最大子序和
  • 5.1.4、【AI技术新纪元:Spring AI解码】Amazon Bedrock
  • ASP .Net Core ILogger日志服务
  • MongoDB聚合运算符:$getField