![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
回溯算法
回溯法的题
深巷wls
平平无奇
展开
-
L3-029 还原文件 (30 分)(DFS)(C/C++)
输入样例:1795 70 80 97 97 68 58 58 80 72 88 81 81 68 68 60 8064 68 58 58 803 81 68 683 95 70 803 68 60 805 80 72 88 81 814 80 97 97 68输出样例:3 6 1 5 2 4a[i]存储第i个折线角点的高度;f[i]存储第i个纸条碎片的信息。通过DFS从没有切碎的纸片最左端开始尝试所有纸条碎片的匹配,now表示当前所需要匹配的碎片左侧在未碎纸片上的位置,..原创 2022-04-16 16:51:49 · 681 阅读 · 0 评论 -
八皇后问题(权值最大)C/C++
n皇后问题可以看此处努比亚和苏丹没有子女,所以他要从一些有集成资格的继承者中挑选一个出来继承王位。他希望这个继承者足够聪明,所以他准备了一个西洋棋盘,上面的每个格子中均有一个 1−99 的数字。他又准备了 8 个皇后棋子。88 皇后的规则就是不能有任何棋子同行或者同列或者同斜线,在满足这个规则的同时,王位继承者还需要让 8 个皇后所在的位置的数字的和是最大的。输入格式输入一个数字 k(k≤20),代表棋盘的数量。接下来有 k 个棋盘,每个棋盘有 64 个数字,分成 8 行 8 列出入,具体可见样例原创 2022-01-12 19:55:57 · 175 阅读 · 0 评论 -
字符串全排列(C/C++,回溯法)
本题是给定字符串的全排列,数字的全排列看此处题目描述给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有 ‘a’ < ‘b’ < … < ‘y’ < ‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。输入格式输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在 1 到 6 之间。输出格式输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:Sample Inputab原创 2022-01-12 18:38:38 · 1363 阅读 · 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 · 177 阅读 · 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 · 185 阅读 · 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 · 657 阅读 · 2 评论 -
最大团(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB题目描述中古时期的战争,是由组织散漫的战斗团,在需要运用策略和调动的战场上互相对峙、冲突,然后再一步一步演进而来。一个国家的交通水平也非常重要,如果把各个城邦看成点,道路看成边,几个城邦之间互有道路相连,那么这些城邦对于整个国家来说,就可以称为一个“完全子图”,完全子图中包含的城邦数量越大,一般说明这个国家的交通水平越高,现在给你一张某国家的地图,你能判断这个国家的交通水平是多少吗?输入第一行输入两个整数N, M(N <= 15, M <原创 2021-06-11 10:45:57 · 1150 阅读 · 2 评论 -
素数环(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB题目描述现在有一个环,你需要将1~n填入环的n个顶点内(默认方案的第一个数字为1),使得每相邻的两个数字之和为素数,可能填法不唯一,请你按样例的格式依据字典序输出所有方案。下面是样例中的一种方案。输入多组测试数据,每组一个数字n(1≤n≤15),含义如上。输出按照字典序输出所有方案,详细格式见样例,每组答案之间一个空格。样例输入68样例输出Case 1:1 4 3 2 5 61 6 5 2 3 4Case 2:1 2 3 8原创 2021-06-11 10:29:33 · 1142 阅读 · 1 评论 -
符文收集(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB题目描述在瓦罗兰大陆上,蕴含着强大能量的符文散落在各地。作为召唤师的你需要收集n个符文来强化自身。现在给出你n个符文的坐标,假设起始点在(0,0),请你计算获得这n个符文并回到起始点所需要走的最短路程。(两个点之间的距离为其曼哈顿距离)输入第一行输入一个n,(1≤n≤10 )接下来n行每行两个整数X,Y(-1000≤X,Y≤1000)可能有不同符文的位置相同。输出一个数字表示最短路程。样例输入31 13 32 3样例输出12提原创 2021-06-11 10:04:15 · 259 阅读 · 0 评论 -
m着色(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB题目描述魔法宫殿的最深处藏着一把万能权杖,为这个国家提供了强大的军事力量,然而有天却被一个等级略低的小法师误用,导致强大的法术失控,并形成了一个怪异的法阵保护着法杖。国家少了一件圣器,在战火纷飞的年代国力也逐渐衰退,历代国王们不惜一切代价和奖赏,吸引人们来破解法阵,可惜百年来无人能破。现在你穿越来到了宫殿,这个法阵就摆在你面前,它由许多魔法球连接而成,你可以看成一张联通的无向图,由于这个世界的元素是平衡的,相邻的魔法球如果具有相同的元素,就会发出元素之力原创 2021-06-11 09:50:16 · 341 阅读 · 1 评论 -
n皇后(回溯法)C/C++
时间限制: 1 Sec 内存限制: 128 MB题目描述在n*n的棋盘摆放n个棋子,任意两个棋子都不能处于同一行、同一列或同一斜线上,问有多少种摆法。输入输入一个整数n(1<=n<=8),表示棋子的个数。输出输出一个整数,表示棋子的摆法数目。样例输入4样例输出2AC代码:#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 · 705 阅读 · 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 · 598 阅读 · 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 · 2419 阅读 · 0 评论