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