
暴力
Minion_w
这个作者很懒,什么都没留下…
展开
-
HDU 3699(J) ——A hard Aoshu Problem(DFS暴力搜索)
题目连接:点击打开链接题目大意:输入三个字符串,s1, s2, s3,每个字符串只含有大写英文字母组成,并且每个英文字母代表一个特定的数字,然后求 s1 _ s2 = s3; 有多少种解法注意数字无前导零,然后分母不为0, 第一组测试样例: 1 * 1 = 1; 1 / 1 = 1 ; 0 + 0 = 0 ; 0 - 0 = 0 ; 0 * 0 = 0;解题思路:因为每个串原创 2017-07-25 23:25:00 · 383 阅读 · 0 评论 -
HDU 3697(H) ——Selecting courses(暴力枚举,贪心)
题目链接:点击打开链接题目大意:任选一个时刻开始,每隔五分钟可以在这个时刻选择一门且只能选择小于等于一门课程,每门课程有一个有效期,可以在这个有效期内选择且这个有效期为【t1, t2)形式 !! 然后让你找出最多能选择几门课程解题思路:先确定在什么时候开始,开始时间只需要在0 ~ 4之间列举即可,剩下的就都能取到了, 开始时间确定了,然后开始求在不同原创 2017-07-25 23:41:29 · 439 阅读 · 0 评论 -
UVA 140——Bandwidth(暴力)
题目连接:点击打开链接题目大意:给你一个字符串,表示点之间的关系,然后把这些点排成一列,所有有关系的点中的最长距离为这一串点所组成的图的宽带,然后让你求出求出这一串点的最小宽带解题思路:因为一个字符串中最多有8个点,所以枚举出所有可能的序列,然后挨着计算所有的宽带,找出最小即可注意:注意该题中对于字符串的处理,然后生成全排列的运用代码://UVA 140全排列练习题#in原创 2017-07-26 00:18:46 · 437 阅读 · 0 评论 -
生成全排列
生成数字 1 ~ n的全排列 :#include#includeusing namespace std;void print_permutation(int n, int *A, int cur){ if(cur == n) { for(int i = 0; i < n; i++) printf("%d ", A[i]);原创 2017-08-13 13:56:08 · 265 阅读 · 0 评论 -
子集生成
一、增量构造法产生没有重复元素集合的所有子集#include#include#includeusing namespace std;void print_subset(int n, int * A, int cur){ for(int i = 0; i < cur; i++) printf("%d ", A[i]); printf("\n");原创 2017-08-13 16:11:47 · 327 阅读 · 0 评论 -
回溯法
当把问题分成若干个步骤并递归求解时,如果当前步骤,没有合法的解释,则函数将返回上一级递归调用,这种现象称为回溯,正是因为这个原因,递归枚举算法常被称为回溯法,应用十分广泛。经典的八皇后问题: 在棋盘上放置八个皇后,使得他们户部攻击,此时每个皇后的攻击范围为同行同列和同对角线要求找出所有的解代码:#includeusing namespace s原创 2017-08-13 16:44:14 · 279 阅读 · 0 评论 -
路径寻找问题
路径寻找问题可以归结为隐式图的遍历,他的任务是找到一条路径从初始状态到终止状态的最优路径,而不是像回溯法那样找到一个符合某些要求的解经典的八数码问题:编号为1 ~ 8 的8个正方形滑块被摆成3行3列(有一个格子为空),每次可以把空格和相邻的四个滑块互换,给定初始和目标局面(0表示空格),你的任务是计算从初始到目标位置最少移动的步数,如果无法达到则输出-1;输入: 2 6 4 1 3 7原创 2017-08-13 17:09:39 · 499 阅读 · 0 评论 -
迭代加深搜索 (IDA*)
迭代加深搜索: 从小到大枚举深度 maxd, 每次执行只考虑深度不超过maxd的结点。这样,只要解得深度有限,则一定可以在有限的时间内枚举到(一定要有解哈) 如果可以设计出一个乐观估价函数,预测从当前结点至少还需要扩展几层结点才有可能得到解,则迭代加深搜索变成了IDA*算法经典的埃及分数问题: 在古埃及,人们使用单位分数的和(1/a, a为自然数),表示有理数、原创 2017-08-13 17:21:47 · 750 阅读 · 0 评论