深度优先搜索
文章平均质量分 71
TOP-SECRET
这个作者很懒,什么都没留下…
展开
-
C++搜索与回溯算法之素数环问题
素数环问题:从1到n(n代码如下:#include#includeint n;int num[10001]; //存储数据bool mark[10001]; //判断该数是否被标记过bool check(int x,int y) //判断是否满足"素数环"条件{ int k=2,i=x+y; while(k<=sqrt(i)&&i%k!=0) k++;原创 2017-05-22 22:11:41 · 6129 阅读 · 2 评论 -
C++搜索与回溯算法之置棋问题
置棋问题题目描述在M*N的主格中任意指定X个格子构成一个棋盘,而其它格子是残缺的,不能放棋子。在任一个构成的棋盘上放置K个棋子,要求任意两个棋子不得位于同一行或同一列上。求满足条件的所有方案数。注意:棋盘是稀疏的,即X<(M*N)/2编程任务:1. 对给定的一个棋盘,求出该棋盘可放置的最多的棋子数P;2. 该棋盘上恰好放置i个棋子时的方案总数(1≤i≤P),其中经旋转和原创 2017-06-21 13:45:51 · 867 阅读 · 0 评论 -
C++搜索与回溯算法之Lake Counting(数湖)
Lake Counting(数湖)Description(描述)Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <=原创 2017-07-02 17:36:54 · 1730 阅读 · 1 评论 -
C++搜索与回溯算法之红与黑
红与黑Description有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。Input包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,原创 2017-06-11 14:41:10 · 6438 阅读 · 0 评论 -
C++搜索与回溯算法之棋盘问题
棋盘问题Description在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋原创 2017-06-11 14:51:23 · 3122 阅读 · 0 评论 -
C++搜索与回溯算法之符号三角形
符号三角形Description 符号三角形的第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“,2个异号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”+“ 和”-“ 的个数相同。 n=7时的1个符号三角形如下:+ + - + - + ++ - - - - +- + + + -- + + -- + -- -+Input原创 2017-07-12 12:21:37 · 1576 阅读 · 0 评论 -
C++搜索与回溯算法之城堡问题
城堡问题Description 1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####---#####---#---#####---# 2 # # | # # # # # #---#####---#####---#####---# 3 # | | # # # # # #---#########---#...原创 2017-06-24 13:51:04 · 1626 阅读 · 1 评论 -
C++搜索与回溯算法之The Castle
The Castle(想看翻译的朋友,请单击☀;想看代码的朋友,请单击☆)Description 1 2 3 4 5 6 7 #############################1 # | # | # | | # #####---#####原创 2017-06-24 14:12:36 · 1770 阅读 · 0 评论 -
C++搜索与回溯算法之LETTERS(字母)
LETTERS(字母)DescriptionA single-player game is played on a rectangular board divided in R rows and C columns. There is a single uppercase letter (A-Z) written in every position in the boa原创 2017-07-03 16:45:03 · 3118 阅读 · 0 评论 -
C++搜索与回溯算法之跳棋的挑战
跳棋的挑战题目描述检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列只有一个,每条对角线(包括两条主对角线的所有对角线)上至多有一个棋子。 上面的布局可以用序列2 4 6 1 3 5来描述,第i个数字表示在第i行的相应位置有一个棋子,如下:行123456列246135原创 2017-06-14 13:26:20 · 3342 阅读 · 0 评论 -
C++搜索算法和曼哈顿距离之最少连通代价
最少联通代价Description在一个N行M列的字符网格上,恰好有 2 个彼此分开的连通块。每个连通 块的一个格点与它的上、下、左、右的格子连通。如下图所示:现在要把这 2 个连通块连通,求最少需要把几个’.’转变成’X’。上图的例子中, 最少只需要把 3 个’.’转变成’X’。下图用’*’表示转化为’X’的格点。Input第1行:2个整数原创 2017-07-15 11:30:56 · 2450 阅读 · 0 评论 -
C++搜索与回溯算法之选数
选数题目描述已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 现在,要求你计算出和为素数共有多少种。 例如上例,只有一种的和原创 2017-07-10 14:56:50 · 1441 阅读 · 0 评论 -
C++搜索与回溯算法之母亲的牛奶
母亲的牛奶题目描述农民约翰有三个容量分别是A,B,C升的桶,A、B、C分别是三个从1到20的整数。最初,A和B桶都是空的,而C桶是装满牛奶的。有时,约翰把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了。由于节约,牛奶不会有丢失。写一个程序去帮助约翰找出当A桶是空的时候,C桶中牛奶所剩量的所有可能性。输入第1行:3个整数A,B和C。输出第原创 2017-06-20 13:50:22 · 1169 阅读 · 0 评论 -
C++搜索与回溯算法之迷宫问题
迷宫问题:一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走,用'#'表示;有的格子是空地,可以走,用'.'表示;。给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。输入R、C和迷宫,输出所有路径。代码如下:原创 2017-05-23 06:14:11 · 3185 阅读 · 1 评论 -
C++搜索与回溯算法之移动问题
桌子上有一个r行c列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(r,c)。小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。小明把这只蚂蚁放在左下角的方格中,蚂蚁从左下角的方格中移动到右上角的方格中,每步移动一个方格。蚂蚁始终在方格矩阵内移动,请计算出不同的原创 2017-05-26 13:16:18 · 1283 阅读 · 0 评论 -
C++搜索与回溯算法之八皇后问题
八皇后问题:在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方。输出所有的解。代码如下:#includeusing namespace std;int b[10]={0},c[20]={0},d[20]={0},a[10][10]={0};int t=0;void print(){ t++; printf("No. %d\n",t); for (int i =原创 2017-05-27 18:40:45 · 1781 阅读 · 3 评论 -
C++搜索与回溯算法之拆数
版本一:题目描述输入自然数N,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复。输入第1行:1个整数n(n≤30)输出所以拆分方案,顺序见样例。样例输入4样例输出3+12+22+1+11+1+1+1代码如下:#include #include int num[40],to原创 2017-05-28 14:28:26 · 2648 阅读 · 0 评论 -
C++搜索与回溯算法之马走日(遍历问题)
马走日Description马在中国象棋以日字形规则移动。请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。Input第一行为整数T(T 每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。(0Output每组测试数据包含原创 2017-06-17 12:07:17 · 10286 阅读 · 2 评论 -
C++搜索与回溯算法之全排列问题
全排列问题:设有n个整数的集合{1,2,…,n},从中任意取出r个数进行排列(r),试列出所有的排列。可以用枚举,就像这样(当r=5时): #includeint n,i[5],r=5;bool mark(int x[],int y){ for(int j=0;j<y-1;j++) for(int k=j+1;k<y;k++) if(x[j]==x[k]) r原创 2017-05-21 22:08:36 · 6386 阅读 · 0 评论 -
C++搜索与回溯算法之马拦过河卒
马拦过河卒题目描述棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,A点(0, 0)、B点(n, m)(n, m为不超过20的整数),同样马的位置坐标是需要给出的。现在要求你计算出卒从A点能够到达B点的路径的条数,假设马原创 2017-05-29 13:42:48 · 7413 阅读 · 0 评论 -
C++搜索与回溯算法之字符串全排列
给定一个字符串,生成其中字符的所有的排列。(长度:最长10000,且所有排列按字典序输出)代码如下:#include #includeint check[360]; //用于存储每个字母的数量(Ascll码存储法),以此来判断是否可以使用该字母char word[10000]; //用于存储字母,方便输出char str[10000]; //字符数组int len; //用原创 2017-05-28 19:42:23 · 2016 阅读 · 0 评论 -
C++之小学奥数(1)
题目描述:ABCD* E DCBA 按以上格式输出ABCDE的值(A!=B&&A!=C&&A!=D&&A!=E&&B!=C&&B!=D&&B!=E&&C!=D&&C!=E&&D!=E)。 解题思路:看到这道题之后,许多人想到的是枚举,就像这样:#includeusing namespace std;int main() {原创 2017-05-30 14:07:56 · 3518 阅读 · 0 评论 -
C++之小学奥数(2)
求出第k小排列题目描述给出两个正整数n,k(n//也就是说要求全排列出来后的第k个数输入只有一行:两个整数,n(n输出输出该排列样例输入4 3样例输出1324题目分析当n==4时,所有的全排列(数)如下:1234,1243,1324,1342,1423,1432;2134,2143,2314,2341,241原创 2017-06-03 15:37:59 · 2375 阅读 · 0 评论 -
C++搜索与回溯算法之单词接龙
----------------------*单词接龙*----------------------Description单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为b原创 2017-07-09 10:56:04 · 2985 阅读 · 0 评论