摘要: 代码其实很简单,我们只需要知道set类的使用方法就可以了,比如迭代器的定义( set::iterator it=a.begin() ),和简单的insert函数插入,以及find函数找到时返回对应的迭代器,找不到时返回该set的end。#include #includ... 阅读全文
posted @ 2018-11-25 18:20 xyee 阅读(727) 评论(0) 推荐(0) 编辑
摘要: 它这个问题问的是,在有限的容量下,能装下的最大价值是多少。所以我们可以递归求解,记忆性递归,用二维数组,但是这样的话就会超内存,所以我们只能用动规来写,而且不能开二维数组,只能用滚动数组。我们设一个F数组,大小为13000,它存的是容积为m的背包可放下的最大价值。我们... 阅读全文
posted @ 2018-11-24 17:50 xyee 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 动态规划的话,我们中心思想就是,设一个num数组,num[ i ][ j ] 代表从i的大小中,取出 j 种物品的方法数。当不取j种物品的时候,我们就让num[ i ][ j ] =num[ i ][ j -1 ],并且此时,如果,i-a[j]>=0 的话,说明背包还... 阅读全文
posted @ 2018-11-24 15:21 xyee 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 这道题用递归写的话还是很好写的,我们设递归函数的名称为Ways(w,k) 。它的含义就是,w的大小,取k个物品,有多少种方式。我们可以知道递归的边界条件就是当w的大小为0的时候,我们的方法数只有一种,但是当我们要... 阅读全文
posted @ 2018-11-24 15:13 xyee 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 这道题用递归写的话还是很好写的,我们设递归函数的名称为Ways(w,k) 。 它的含义就是,w的大小,取k个物品,有多少种方式。 我们可以知道递归的边界条件就是当w的大小为0的时候,我们的方法数只有一种,但是当我们要取0个物品的时候,我们的方法数就为0了,因为Ways(40,0),显然是0。 边界条 阅读全文
posted @ 2018-11-24 15:13 xyee 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 这个题的意思就是说:给一个序列 A 和 B ,让你求他们的共同的子序列的长度,这些子序列可以不在原来的字符串中连续排列。这个题的话,我们可以使用动态规划的思路,我们假设 MaxLen [ i ] [ j ] 是 A 串和 B 串中从一开始的,A 串中的的第 i 个字符... 阅读全文
posted @ 2018-11-23 13:51 xyee 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 代码很容易看明白,就不详解了。这个是空间优化的代码。#include #include #define MAX 101 using namespace std;int D[MAX][MAX];int n;int *maxsum;int main(){ cin>>n; ... 阅读全文
posted @ 2018-11-18 13:59 xyee 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 这道题目并不能直接使用递归,因为 7(1) 7(1) 7(1) 7(1) 7(2) ... 阅读全文
posted @ 2018-11-17 20:44 xyee 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 快速排序是一种分治的思想。每次快速排序的时候,都是用第一个数来比较的,然后设置两个指针,一个i 一个 j ,一个指向首位,一个指向末尾。然后从末尾开始比较,如果 a [ j ] 大于a [ 0 ] 的话那就让j-... 阅读全文
posted @ 2018-11-17 16:55 xyee 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 快速排序是一种分治的思想。 每次快速排序的时候,都是用第一个数来比较的,然后设置两个指针,一个i 一个 j ,一个指向首位,一个指向末尾。 然后从末尾开始比较,如果 a [ j ] 大于a [ 0 ] 的话那就让j--,直到后面的数有一个小于 a [ 0 ],然后交换两个数的值。 这时候开始进行 i 阅读全文
posted @ 2018-11-17 16:55 xyee 阅读(109) 评论(0) 推荐(0) 编辑