首页 > 编程语言 >c++迷宫问题(migong)

c++迷宫问题(migong)

时间:2025-01-23 14:57:28浏览次数:3  
标签:输出 migong 15 int 路径 迷宫 c++ &&

今天的题目叫“迷宫问题(migong)”,是“DFS深度优先搜索 递归”一类的。

题目描述

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

输入

第一行一个正整数n。

接下来2~n+1行 表示该迷宫。

输出

输出共一行,输出路径总数

输入样例
3 
0 0 0 
0 1 1 
1 0 0 
输出样例
2
提示

【数据范围】2<=n<=10

解题:

#include <bits/stdc++.h>
using namespace std;
int sum,n;
bool a[15][15];
int dx[9]={0,0,0,1,-1,1,-1,1,-1};//八个方向
int dy[9]={0,1,-1,0,0,1,-1,-1,1};
void dfs(int x,int y)
{
	if(x==1&&y==n)//到达边界
	{
		sum++;
		return;
	}
	for(int i=1;i<=8;i++)//八个方向
	{
		int tx=x+dx[i];//下一步要走的位置
		int ty=y+dy[i];
		if(tx>0&&ty>0&&tx<=n&&ty<=n&&a[tx][ty]==false)
		{//能走
			a[tx][ty]=1;
			dfs(tx,ty);
			a[tx][ty]=0;//回溯
		}
	}
}
int main()
{
	cin >> n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin >> a[i][j];
		}
	}
	a[1][1]=1;
	dfs(1,1);
	cout << sum;
	return 0;
}

标签:输出,migong,15,int,路径,迷宫,c++,&&
From: https://blog.csdn.net/s2015_818/article/details/145323277

相关文章

  • c++瓷砖
    今天的题目叫“瓷砖”,是“DFS深度优先搜索递归”一类的。题目描述在一个w×h的矩形广场上,每一块1x1的地面都铺设了红色或黑色的瓷砖。小谢同学站在某一块黑色的瓷砖上,他可以从此处出发,移动到上、下、左、右四个相邻的且是黑色的瓷砖上。现在他想知道,通过重复上述移动所能......
  • 【基础】愤怒的奶牛 USACO c++
    描述FarmerJohn建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,…,xN(0<=xi<=1,000,000,000)。他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。为了防止牛之间的互相打斗,FarmerJohn想把这些牛安置在指定的隔间,所......
  • 打卡信奥刷题(651)用C++信奥P8396[普及组/提高] [CCC2022 S2] Good Groups
    [CCC2022S2]GoodGroups题目背景请注意:这道题是CCO2022J4GoodGroups的加强版。管理备注:似乎没有加强。题目描述一个班级会被分成ggg个组,每个组有三个人,这......
  • 详解类与对象——c++对象模型和this指针
    (^_^)一.成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上classPerson{public:Person(){mA=0;}//非静态成员变量占对象空间intmA;//静态成员变量不占对象空间staticintmB;//函数也不占对......
  • c++ 智能指针
    1. unique_ptr:这种智能指针是用于独占一份内存资源,一个资源也就只允许被一个unique_ptr占用。离开作用域后自动删除,无需显式调用delete。并且不能复制,只能转移。原理实现:template<typenameT>classunique_ptr{private:T*ptr;public:explicitunique_ptr(T*p......
  • GESP2024年6月认证C++六级( 第三部分编程题(1)计算得分)
    参考程序:#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;inta[30];strings;intdp[N];intmain(){ intn; cin>>n; for(inti=1;i<=n;i++) { cin>>a[i]; } intm; cin>>m; cin>>s; for(inti=1;i<=......
  • 最新毕设-Django-新能源汽车推荐系统-30063(免费领项目)可做计算机毕业设计JAVA、PHP、
    摘要本论文主要论述了如何基于Django框架开发一个新能源汽车推荐系统,本系统将严格按照软件开发流程进行各个阶段的工作,爬取懂车帝的汽车信息,面向对象编程思想进行项目开发。在引言中,作者将论述新能源汽车推荐系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,......
  • 《 C++ 点滴漫谈: 二十二 》操作符炼金术:用C++ operator重塑代码美学
    摘要C++的operator关键字和操作符重载是语言的核心特性之一,使开发者能够扩展内置操作符以适应自定义类型,从而实现更高效、直观的代码表达。本文全面解析了operator关键字的基本概念、支持重载的操作符范围及其使用场景,详细介绍了操作符重载的语法、实现细节和底层机制......
  • 学生管理系统C++版(简单版)详解
    有错请指出啊~,答应大家的来了头文件:#include<iostream>#include<stdlib.h>#include<windows.h>iostream是标准头文件,stdlib.h也可以写成cstdlib,windows.h,用Sleep数据定义:intx,y=0;//x是输入,y是xm的下标,初始化y为0详解见代码。 结构体类型:structStudent{  c......
  • c++面试_RPC
    **RPC(RemoteProcedureCall,远程过程调用)**是一种计算机通信协议,它允许程序调用另一个地址空间(通常是远程服务器)的过程或函数,就像调用本地函数一样,而无需关心底层的网络通信细节。以下是对RPC的详细介绍以及它解决的问题:一、RPC的基本原理基本概念:RPC使客户端程序能......