利用回溯法求素数环c语言,P1605 迷宫 dfs回溯法

题目背景

迷宫 【问题描述】

给定一个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

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

#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<

return ;

}

P1074 靶形数独 dfs回溯法

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

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

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

P1378 油滴扩展 dfs回溯法

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

noj算法 迷宫问题 回溯法

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

UVA 524 素数环 【dfs&sol;回溯法】

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

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

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

P1118 &lbrack;USACO06FEB&rsqb;数字三角形&grave;Backward Digit Su&grave;… 回溯法

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

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

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

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

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

随机推荐

iOS 微信支付总结

1.支付流程 https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3 商户系统和微信支付系统主要交互说明: 步骤1:用户在商户APP中选择 ...

基于slideout&period;js实现的移动端侧边栏滑动特效

HTML5现在本领太大了,PC端已经无法满足它的胃口了,它将强势攻入移动端,所以移动端中各种特效也得基于HTML5实现,看看我们将要介绍的slideout.js,能帮我们实现怎么样的侧边栏滑动特效呢~ ...

20151124002 treeView 数型菜单的操作

20151124002 treeView 数型菜单的操作 protected void FillTree()        {            SqlConnection1 = new Syst ...

php 目录及文件操作

// bool is_dir(string $filename) 判断给定文件名是否是一个目录.// resource opendir(string $path[,resource $context] ...

Hibernate - cascade-and -session&lowbar;state

cascade属性: 默认为none,代表不级联. 级联是指操作主对象时,对关联的对象也做相同的操作. 可设为:delete, save-update, all, none ...-- 一般是对象只归 ...

【javaFX学习】(二) 面板手册--1

找了好几个资料,没找到自己想要的,自己写个列表吧,方便以后用的时候挑选,边学边记.以学习笔记为主,所以会写的会偏个人记忆性.非教程,有什么问题一起讨论啊. 各个不同的控件放入不同的面板中有不同的效果, ...

PredictionIO&plus;Universal Recommender快速开发部署推荐引擎的问题总结&lpar;3&rpar;

PredictionIO+Universal Recommender虽然可以帮助中小企业快速的搭建部署基于用户行为协同过滤的个性化推荐引擎,单纯从引擎层面来看,开发成本近乎于零,但仍然需要一些前提条件 ...

为数据库重新生成log文件

1.新建一个同名的数据库 2.再停掉sql server(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再重启sql server 5.此时打开企业管理器时会出现置疑,先不 ...

修改HAL标准库用printf函数发送数据直接输出

主函数文件,请直接关注自己写上去的代码: 直接看43行代码:#include "stdio.h"//要添加这个头文件 还有97行到112行:实现用HAL库函数和printf函数发送 ...

erc721-165学习

ERC165: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md 就是一种发布并能检测到一个智能合约实现了什么接口的标准 这么做 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值