深度优先搜索
qq_52051345
博客转移至www.acming.net和51codefly.com
展开
-
踏青
蒜头君和他的朋友周末相约去召唤师峡谷踏青。他们发现召唤师峡谷的地图是由一块-块格子组成的,有的格子,上是草丛,有的是空地。草丛通过上下左右4个方向扩展其他草丛形成一片草地, 任何一片草地中的格子都是草丛,并且所有格子之间都能通过上下左右连通。如果用’#‘代表草丛,’.'代表空地,下面的峡谷中有2片草地。 ##.. ..##处在同一个草地的2个人可以相互看到,空地看不到草地里面的人。他们发现...原创 2019-02-27 22:01:18 · 145 阅读 · 0 评论 -
仙岛求药
少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵 岛,向仙女姐姐要仙丹救婶婶。叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处。迷阵由M x N个方格组成,有的方格内有可以瞬秒李逍遥的怪物,而有的方格内则是安全。现在李逍遥想尽快找到仙药,显然他应避开有怪物的方格,并经过最少的方格,而且那里会有神秘人物等待着他。现在要求你来帮助他实现这个目标。输入格式第一行输入两...原创 2019-03-07 08:47:20 · 153 阅读 · 0 评论 -
红与黑
有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖,你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请你写出一个程序,计算你总共能达到多少块黑色瓷砖。输入数据:包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别代表x方向和y方向瓷砖的数量。W和H都不超过20.接下来的H行中,每行包括W各字符。每个字符表示一块瓷砖的颜色,规则如下:‘.’:黑色的瓷砖‘#’:白色的瓷砖...原创 2019-03-07 08:03:42 · 158 阅读 · 0 评论 -
找数字
给一个数 n,让你找出一个只由 0,1 组成的十进制数 m,要求这个正整数 m 可以被 n 整除。#include <iostream>using namespace std;int n;bool ok = false;void dfs(long long x, int cnt){ if (ok) { return; } if (cnt == 19) { ...原创 2019-03-14 10:44:01 · 268 阅读 · 0 评论 -
深度优先搜索解决全排列问题
题目:假如有编号为1、2、3的3张扑克牌和编号为1、2、3的3个盒子。现在需要将这3张扑克牌分别放到3个盒子里,并且每个盒子有且只能放一张扑克牌。那么一共有多少种不同的排法?代码及注释:#include&amp;amp;lt;stdio.h&amp;amp;gt;//全局变量,数组元素值自动初始化为0int a[10];//充当盒子编号 int book[10];//用book[i] = 0或1来表示扑克牌i是否在手上...原创 2018-12-18 11:29:47 · 680 阅读 · 0 评论 -
一笔画
如图,问有多少种方法一笔画走到终点?#include <iostream>using namespace std;int vis[10][10];int dir[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};int ans;void dfs(int x, int y, int step){ if (x > 2 || x ...原创 2019-03-05 08:50:00 · 1325 阅读 · 0 评论 -
引爆炸弹
在一个n x m的方格地图上,某些方格上放置着炸弹。手动引爆-个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去。炸弹现在为了引爆地图.上的所有炸弹,需要手动引爆其中一些炸弹,为了把危险程度降到最低,请算出最少手动引爆多少个炸弹可以把地图上的所有炸弹引爆。数据范围:1&lt;=n,m&lt;=1000;#include &lt;stdio.h...原创 2019-02-24 18:39:49 · 666 阅读 · 0 评论 -
迷宫最短路
#include &amp;lt;iostream&amp;gt;#include &amp;lt;string&amp;gt;using namespace std;int n, m;string maze[110];bool vis[110][110];int dir[4][2] = {{-1, 0},{0, -1},{1, 0},{0, 1}};int ans = 100000000;bool in(int原创 2019-02-24 10:49:57 · 155 阅读 · 0 评论 -
中国象棋
输入表示这个棋盘,我们用’. ‘表示空位置,用’#"表示该位置有棋子,用’S’表示初始的马的位置,用’T’表示马需要跳到的位置。输入保证一定只存在一个’S’和一个’T’。输出格式如果在不移动其他棋子的情况下,马能从’S’跳到’T’,那么输出一行"Yes", 否则输出一行"No"。样例输入:.#…#S#…#.#.#……##.#…#…##.…T……#.#……#……###…原创 2019-02-24 10:35:48 · 238 阅读 · 0 评论 -
dfs迷宫对应代码框架
// 对坐标为 (x, y) 的点进行搜索bool dfs(int x, int y) { if (x, y) 是终点 { // 找到了路径 return true; } 标记 (x, y) 已经访问 向上走到位置 (tx, ty) if (tx, ty) 在地图里面且没有访问 { if (dfs(tx, t...原创 2019-02-22 13:00:11 · 275 阅读 · 0 评论 -
奇偶性剪枝
如上图所示,将n X m的网格染成黑白两色。我们记每个格子的行数和列数之和为x,如果x为偶数,那么格子就是白色,反之奇数时为黑色。容易发现相邻的两个格子的颜色肯定不一样,也就是说每走一步颜色都会不一样。更普遍的结论是:走奇数步会改变颜色,走偶数步颜色不变。那么如果起点和终点的颜色一样,而T是奇数的话,就不可能逃离迷宫。同理,如果起点和终点的颜色不一样,而T是偶数的话,也不能逃离迷宫。遇到这两种...原创 2019-02-24 16:58:13 · 288 阅读 · 0 评论 -
八皇后问题
八皇后问题,是一个古老而著名的问题,是搜索算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。#include <iostream>using namespace std;int ans = 0;bool row[10], x1[2...原创 2019-02-24 14:35:12 · 75 阅读 · 0 评论 -
等边三角形
蒜头君手上有一些小木棍,它们长短不一,蒜头君想用这些木棍拼出一个等边三角形,并且每根木棍都要用到。例如, 蒜头君手上有长度为1, 2, 3, 3的4根木棍,他可以让长度为1,2的木棍组成一条边,另外2跟分别组成2条边,拼成一个边长为3的等边三角形。蒜头君希望你提前告诉他能不能拼出来,免得白费功夫。输入格式首先输入一个整数n(3 &lt; n &lt; 10),表示木棍数量,接下来输入n根木棍的...原创 2019-02-24 14:32:52 · 617 阅读 · 0 评论 -
洛谷P1036选数
题目描述:已知 n 个整数 x1,x2,…,xn,以及1个整数k(k&amp;amp;amp;lt;n)。从n个整数中任选k个整数相加,可分别得到一系列的和。例如当n=4,k=3,4个整数分别为3,7,12,19时,可得全部的组合与它们的和为:3+7+12=223+7+19=297+12+19=383+12+19=34现在,要求你计算出和为素数共有多少种。例如上例,只有一种的和为素数:3+7+19=29输...原创 2019-02-13 12:20:10 · 483 阅读 · 0 评论 -
k个数的和
解决从 n 个数中选 k 个数的和为 sum 问题。#include &amp;lt;iostream&amp;gt;using namespace std;int n, k, sum, ans;int a[40];void dfs(int i, int cnt, int s){ if (i == n) { if (cnt == k &amp;amp;&amp;amp; s == s原创 2019-02-24 11:49:33 · 342 阅读 · 0 评论 -
蒜头君开公司
2020年,蒜头君自己开了一家拥有N个员工的大公司。每天,蒜头君都要分配N项工作给他的员工,但是,由于能力的不同,每个人对处理相同工作所需要的时间有所差异。众所周知,蒜头君是一个非常重视效率的人,他想知道该如何分配工作,才能使得完成所有工作的时间总和最小(每个员工只可以被分配到一个工作)。但是我们也都知道,蒜头君不是一般的懒,所以蒜头君找到了你,请你拯救一下蒜头君吧!输入格式第一行输入一个整...原创 2019-02-28 12:06:30 · 107 阅读 · 0 评论 -
家谱
家谱,又称族谱、宗谱等,是一种以表谱形式,记载-个家族的世系繁衍及重要人物事迹的书。皇帝的家谱称玉牒,如新朝玉牒、皇宋玉牒。它以记载父系家族世系、人物为中心,由正史中的帝王本纪及王侯列传、年表等演变而来。家谱是一种特殊的文献,就其内容而言,是中国五千年文明史中具有平民特色的文献,记载的是同宗共祖血缘集团世系人物和事迹等方面情况的历史图籍。家谱属珍贵的人文资料,对于历史学、民俗学、人口学、社会学和...原创 2019-02-28 09:54:22 · 876 阅读 · 0 评论 -
方程的解数
蒜头君在求解一个 nn 元的高次方程:其中:x1 ,x2 ,…,xn 是未知数,k1, k2,…, kn 是系数,p1, p2,…, pn 是指数。方程中所有数都一定是整数。输入格式:第一行输入一个整数 (1≤n≤4)。第二行输入一个整数 M (1≤M≤150)。第 3 行到第 n+2 行,每行输入两个整数,分别表示ki (|ki| &lt; 20), pi (1&lt;= pi...原创 2019-03-07 12:27:31 · 285 阅读 · 0 评论