题目背景

迷宫 【问题描述】

给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和

终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫

中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。

输入样例 输出样例

【数据规模】

1≤N,M≤5

题目描述

输入输出格式

输入格式:

【输入】

第一行N、M和T,N为行,M为列,T为障碍总数。第二行起点坐标SX,SY,终点

坐标FX,FY。接下来T行,每行为障碍点的坐标。

输出格式:

【输出】

给定起点坐标和终点坐标,问每个方格最多经过1次,从起点坐标到终点坐标的方

案总数。

输入输出样例

输入样例#1: 复制

2 2 1
1 1 2 2
1 2
输出样例#1: 复制

1

一开始想的是广搜 每个node里面有个vis  但是这种方法吃力不讨好
直接回溯法即可 解决了vis重叠的问题
有一个要注意的是 起点要设置vis=1 不然有一些点没法过
#include<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);i--)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s);
#define LL long long
#define pb push_back
#define fi first
#define REP(i,N) for(int i=0;i<(N);i++)
#define CLR(A,v) memset(A,v,sizeof A)
///////////////////////////////////
#define inf 0x3f3f3f3f
#define N 100
int n,m;
int mp[N][N];
int vis[N][N];
int sx,sy,ex,ey;
int cnt=;
int dx[]={,,-,};
int dy[]={,-,,}; void dfs(int x,int y)
{
if(x==ex&&y==ey)
{
cnt++;return ;
}
rep(i,,)
{
int a=x+dx[i];
int b=y+dy[i];
if(mp[a][b]==)continue;
if(vis[a][b])continue;
vis[a][b]=;
dfs(a,b);
vis[a][b]=;
}
}
int main()
{
int t;
RIII(n,m,t);
rep(i,,n)
rep(j,,n)
mp[i][j]=;
RIII(sx,sy,ex);
RI(ey);
rep(i,,t)
{
int a,b;
RII(a,b);
mp[a][b]=;
}
vis[sx][sy]=;
dfs(sx,sy);
cout<<cnt;
return ;
}

P1605 迷宫 dfs回溯法的更多相关文章

  1. P1074 靶形数独 dfs回溯法

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ...

  2. UVA - 524 Prime Ring Problem(dfs回溯法)

    UVA - 524 Prime Ring Problem Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & % ...

  3. P1378 油滴扩展 dfs回溯法

    题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...

  4. noj算法 迷宫问题 回溯法

    描述: 给一个20×20的迷宫.起点坐标和终点坐标,问从起点是否能到达终点. 输入: 多个测例.输入的第一行是一个整数n,表示测例的个数.接下来是n个测例,每个测例占21行,第一行四个整数x1,y1, ...

  5. UVA 524 素数环 【dfs/回溯法】

    Description   A ring is composed of n (even number) circles as shown in diagram. Put natural numbers ...

  6. P1120 小木棍 [数据加强版] 回溯法 终极剪枝

    题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过5050. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度 ...

  7. P1118 [USACO06FEB]数字三角形`Backward Digit Su`… 回溯法

    有这么一个游戏: 写出一个11至NN的排列a_iai​,然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少11,直到只剩下一个数字位置.下面是一 ...

  8. 剑指offer:矩阵中的路径(递归回溯法DFS类似迷宫)

    1. 题目描述 /* 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径. 路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子. 如果一条 ...

  9. 剑指offer:机器人的运动范围(回溯法DFS)

    题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能 ...

随机推荐

  1. python old six day

    今天主要内容: . is 和== 的区别 . 编程的问题 一.       is和==的区别! is  比较的是内存地址 ==  比较的是值 记住结果就好 ⑴id 通过id() 我们查看到一个变量表示 ...

  2. Laravel 5.2--如何让表单提交错误,不清空?

    控制器 public function store(Request $request) { $validator = Validator::make($request->all(), [ 'Su ...

  3. scrapy 在迭代爬取时被拒 offsite 增加dont_filter=True

  4. 如何去掉li标签的重叠边框

    当我们的li标签设置了border的时候就会出现重叠边框,如何去掉呢,见代码 html代码 <ul class="friendLink_list"> <li> ...

  5. python与用户交互、数据类型

    一.与用户交互 1.什么是用户交互: 程序等待用户输入一些数据,程序执行完毕反馈信息. 2.如何使用 在python3中使用input,input会将用户输入的如何内容存为字符串:在python中分为 ...

  6. Confluence 6 "net.sf.hibernate.PropertyValueException: not-null" 相关问题解决

    如果你遇到了下面的错误信息,例如: ERROR [Importing data task] [confluence.importexport.impl.ReverseDatabinder] endEl ...

  7. android studio 包名冲突解决

    Error: Execution failed for task ': app: packageAllDebugClassesForMultiDex'. > Java.util.zip.ZipE ...

  8. PDF编辑方法,PDF怎么去除背景

    PDF文件现在是使用的频率很高的一个软件的格式,PDF文件能够更加直观清楚的表达,PDF文件的使用很方便但编辑起来就来没有那么容易了,PDF文件的编辑是需要借助软件的,今天小编就来跟大家分享一下PDF ...

  9. cf1144E 假高精度平均数

    /* 先一轮求和,再一轮做除法 */ #include<bits/stdc++.h> using namespace std; ],s2[]; ],n; int main(){ cin&g ...

  10. IDEA抛出No bean named 'cacheManager' available解决方法

    (正确的,老师发我的) <?xml version="1.0" encoding="UTF-8"?><beans xmlns="ht ...