
回溯算法
回溯法的题
深巷wls
平平无奇
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
L3-029 还原文件 (30 分)(DFS)(C/C++)
输入样例: 17 95 70 80 97 97 68 58 58 80 72 88 81 81 68 68 60 80 6 4 68 58 58 80 3 81 68 68 3 95 70 80 3 68 60 80 5 80 72 88 81 81 4 80 97 97 68 输出样例: 3 6 1 5 2 4 a[i]存储第i个折线角点的高度; f[i]存储第i个纸条碎片的信息。 通过DFS从没有切碎的纸片最左端开始尝试所有纸条碎片的匹配, now表示当前所需要匹配的碎片左侧在未碎纸片上的位置,..原创 2022-04-16 16:51:49 · 761 阅读 · 0 评论 -
八皇后问题(权值最大)C/C++
n皇后问题可以看此处 努比亚和苏丹没有子女,所以他要从一些有集成资格的继承者中挑选一个出来继承王位。他希望这个继承者足够聪明,所以他准备了一个西洋棋盘,上面的每个格子中均有一个 1−99 的数字。他又准备了 8 个皇后棋子。 88 皇后的规则就是不能有任何棋子同行或者同列或者同斜线,在满足这个规则的同时,王位继承者还需要让 8 个皇后所在的位置的数字的和是最大的。 输入格式 输入一个数字 k(k≤20),代表棋盘的数量。 接下来有 k 个棋盘,每个棋盘有 64 个数字,分成 8 行 8 列出入,具体可见样例原创 2022-01-12 19:55:57 · 235 阅读 · 0 评论 -
字符串全排列(C/C++,回溯法)
本题是给定字符串的全排列,数字的全排列看此处 题目描述 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有 ‘a’ < ‘b’ < … < ‘y’ < ‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。 输入格式 输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在 1 到 6 之间。 输出格式 输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义: Sample Input ab原创 2022-01-12 18:38:38 · 1471 阅读 · 0 评论 -
P1706 全排列问题(DFS+回溯)C++
P1706 全排列问题 1-9九个数好比1-9九张扑克牌,数组好比盒子。 九个数太多,在这里拿1-3举例 开始每个盒子放入对应的扑克,就是1 2 3 走到第4个盒子那里发现手里没有扑克了,就往回走拿起3号盒子里面的3,手里也就只有3没有其他的号码,只好这样,继续往回走;走到2号盒子里拿起2,于是手里就有2和3,2已经放过了,就把3放进去,然后往后走,2放入3号盒子,就是1 3 2 用vis[]数组记录数字是否用过了 #include<iostream> #include<stdio.h&原创 2021-07-14 15:38:24 · 218 阅读 · 0 评论 -
P1219 [USACO1.5]八皇后 Checker Challenge(DFS)C++
P1219 [USACO1.5]八皇后 Checker Challenge 对于一条从右上到左下的对角线,其上的棋子坐标应满足x+y为一定值; 对于一条从左上到右下的对角线,其上的棋子坐标应满足x-y为一定值,为了避免负数的产生,代码中用x-y+n来储存数字 用一个a[][]数组判断该位置是否能放皇后, a[1]代表该列, a[2]代表右上到左下这条对角线, a[3]代表左上到右下这条对角线 #include<iostream> #include<stdio.h> #includ原创 2021-07-14 15:25:11 · 268 阅读 · 0 评论 -
买东西(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB 题目描述 小j买东西有个特点,不一定买好的,也不一定要买的多,只要能恰好把身上的钱花光就好。现在给出n个物品的价格Ai以及小j身上的现金S,假设每个物品的数目只有一个,请问他能将身上所带的钱花完吗? 输入 第一行输入一个数字n表示物品的数目(n ≤ 36),一个数字S表示小j所带的钱( 1≤S≤1e12),用空格隔开。 接下来一行n个数字,每两个数字之间用空格隔开,第i个数字Ai表示第i个物品的价格( 1≤Ai≤1e12)。 输出 若能在n个物品中其恰好购原创 2021-06-11 11:06:35 · 815 阅读 · 2 评论 -
最大团(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB 题目描述 中古时期的战争,是由组织散漫的战斗团,在需要运用策略和调动的战场上互相对峙、冲突,然后再一步一步演进而来。一个国家的交通水平也非常重要,如果把各个城邦看成点,道路看成边,几个城邦之间互有道路相连,那么这些城邦对于整个国家来说,就可以称为一个“完全子图”,完全子图中包含的城邦数量越大,一般说明这个国家的交通水平越高,现在给你一张某国家的地图,你能判断这个国家的交通水平是多少吗? 输入 第一行输入两个整数N, M(N <= 15, M <原创 2021-06-11 10:45:57 · 1260 阅读 · 2 评论 -
素数环(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB 题目描述 现在有一个环,你需要将1~n填入环的n个顶点内(默认方案的第一个数字为1),使得每相邻的两个数字之和为素数,可能填法不唯一,请你按样例的格式依据字典序输出所有方案。下面是样例中的一种方案。 输入 多组测试数据,每组一个数字n(1≤n≤15),含义如上。 输出 按照字典序输出所有方案,详细格式见样例,每组答案之间一个空格。 样例输入 6 8 样例输出 Case 1: 1 4 3 2 5 6 1 6 5 2 3 4 Case 2: 1 2 3 8原创 2021-06-11 10:29:33 · 1292 阅读 · 1 评论 -
符文收集(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB 题目描述 在瓦罗兰大陆上,蕴含着强大能量的符文散落在各地。作为召唤师的你需要收集n个符文来强化自身。现在给出你n个符文的坐标,假设起始点在(0,0),请你计算获得这n个符文并回到起始点所需要走的最短路程。(两个点之间的距离为其曼哈顿距离) 输入 第一行输入一个n,(1≤n≤10 ) 接下来n行每行两个整数X,Y(-1000≤X,Y≤1000) 可能有不同符文的位置相同。 输出 一个数字表示最短路程。 样例输入 3 1 1 3 3 2 3 样例输出 12 提原创 2021-06-11 10:04:15 · 301 阅读 · 0 评论 -
m着色(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB 题目描述 魔法宫殿的最深处藏着一把万能权杖,为这个国家提供了强大的军事力量,然而有天却被一个等级略低的小法师误用,导致强大的法术失控,并形成了一个怪异的法阵保护着法杖。国家少了一件圣器,在战火纷飞的年代国力也逐渐衰退,历代国王们不惜一切代价和奖赏,吸引人们来破解法阵,可惜百年来无人能破。现在你穿越来到了宫殿,这个法阵就摆在你面前,它由许多魔法球连接而成,你可以看成一张联通的无向图,由于这个世界的元素是平衡的,相邻的魔法球如果具有相同的元素,就会发出元素之力原创 2021-06-11 09:50:16 · 393 阅读 · 1 评论 -
n皇后(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB 题目描述 在n*n的棋盘摆放n个棋子,任意两个棋子都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 输入 输入一个整数n(1<=n<=8),表示棋子的个数。 输出 输出一个整数,表示棋子的摆法数目。 样例输入 4 样例输出 2 AC代码: #include<bits/stdc++.h> using namespace std; int n,cnt=0,a[20][20]; bool used[20]; bool judge(i原创 2021-06-10 17:56:47 · 796 阅读 · 0 评论 -
背包问题(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB 题目描述 给定n件物品和一个容量为C的背包,物品i的重量是Wi,价值为Vi。试求如何选择装入背包的物品,使得物品的总价值最大。 输入 第一行输入一个整数C(0<C<10^9),表示背包容量。 第二行输入n(n<=15),表示物品个数 第三行输入n个整数,wi表示第i个物品的重量(0<wi<10^9) 第四行输入n个整数,vi表示第i个物品的价值(0<vi<10^9) 输出 输出一行整数,表示背包的最大价值。 样例输原创 2021-06-10 17:31:20 · 648 阅读 · 1 评论 -
走迷宫(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB 题目描述 现在有一个大小为n*m的迷宫,你正在(1,1)点,你想要前往右下方(n,m),并且每次只能向上下左右四个方向走一步,请问有多少种方案。 输入 第一行输入两个正整数N, M(N <= 10, M <= 10)分别表示迷宫大小,接下来n行每行m个字符 字符为’.’或者’#’,’#’代表这个点不能走,请你输出题目描述中的合法的方案数。(一种方案为合法要求其方案中同一个点仅仅被走过一次) 输出 一个整数为方案数(数据保证方案数小于1e7) 样原创 2021-06-10 17:24:33 · 2521 阅读 · 0 评论