摘要: 参考文献:背包九讲一:01背包问题最基础的背包问题,关键是每个物品只要一件,基本的状态转移方程就是:f[i][v]=max{f[i-1][v],f[i-1][v-w[i]]+v[i]} 有个需要注意的地方是:要求恰好装满背包,那么在初始化时除了f[0]为0其它f[1.... 阅读全文
posted @ 2016-03-11 15:46 seasonal 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题意:看白书要点:就是全排列问题加上一些剪枝,输入存储有些麻烦。注意如果有多个最小的排列,输出字典序最小的那个#include #include #include #include #include #include using namespace std;int n... 阅读全文
posted @ 2016-03-10 19:47 seasonal 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 一:增量构造法思路是一次选出一个元素放入集合中#includevoid print_subset(int n,int a[],int cur){ for (int i = 0; i void print_subset(int n,int b[],int cur){ i... 阅读全文
posted @ 2016-03-09 19:05 seasonal 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题意:机器人走迷宫求最小步数,不同之处在于机器人最多能一次连续穿过k堵墙。要点:BFS模板题稍微有些变换,将vis数组增加到三维来记录穿墙数即可,因为有的时候就算坐标相同,但穿过墙数不同也是不同的。#include#include#include#includeusi... 阅读全文
posted @ 2016-03-08 09:11 seasonal 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 根据字典序,依次输出全排列,整理一下,有两种方法:一种递归,一种利用C++中的STL一:生成可重集的排列#include#include#includeint p[20];int cmp(const void *a, const void *b){ return *(... 阅读全文
posted @ 2016-03-06 16:20 seasonal 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 要点:用0~9编成两个五位数,要求两个数中每个数字只出现一次,第二个数中可以有前导0要点:用第二个数直接暴力枚举就可以#include#includeint num[10];int judge(int a,int b){ memset(num, 0, sizeof(n... 阅读全文
posted @ 2016-03-06 14:45 seasonal 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题意:给出先序和中序求后序要点:递归完成,只要注意一下边界就可以了,水题#include#include#includechar s1[30], s2[30];char tree[30];int count;void build(int l1, int r1,int ... 阅读全文
posted @ 2016-03-06 09:32 seasonal 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题意:看白书要点:题目很简单,就是树的水题,我是直接建树然后模拟,第一次WA主要是最后想输出字符串但没有在末尾加上\0,编译器可以通过但会WA,下次要注意了。这题也可以不建树直接用下标法做,我看了一下网上的代码,确实简单多了1.建树+模拟#include#includ... 阅读全文
posted @ 2016-03-03 10:15 seasonal 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题意:输入一个括号序列,判断是否合法要点:栈的水题,注意空行也合法以及每次要清空栈就行了。话说自己写的就是丑,而且中间没有考虑直接失败的例子,每次都得全部读完,时间复杂度不是很好,不过AC也就行了#include#include#include#includeusin... 阅读全文
posted @ 2016-03-02 18:42 seasonal 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 题意:看白书要点:因为这次需要找字典序最小的边,所以以前随机打印的方法是不行的,这道题用了一个很巧妙的方法:先从终点倒着BFS,将所有结点到终点的最短步数储存起来,然后直接从起点开始走,再一次BFS,到达每一个新结点时要保证d值恰好-1,选择颜色字典序最小的走,如果有... 阅读全文
posted @ 2016-03-01 14:22 seasonal 阅读(84) 评论(0) 推荐(0) 编辑