
算法相关
文章平均质量分 69
孤独正患者
这个作者很懒,什么都没留下…
展开
-
动态规划之0-1背包问题
算法这东西还真不好懂,感觉有些枯燥。坚持看完,认真思考,也会有所收获的。0-1背包是动态规划的经典问题,就不叙述太多了,主要是想写点东西记录下现在的感受和思想。注释很详细了,写完和网上的对照了下。主函数没什么写完整,我是用调试窗口看的结果,后来也懒得加输入结果的语句了。#include #define Max 100using namespace std;int a[Max]原创 2013-12-10 21:17:37 · 705 阅读 · 0 评论 -
整数拆分问题的分析(dfs)
在图书馆书上看到的一个题目,书上是原创 2014-05-13 16:36:33 · 1581 阅读 · 0 评论 -
对快速排序的分析
最近想了想算法,快速排序,看看我以我自己的理解写成什么样子,加上了自己的分析。原创 2014-04-24 10:36:56 · 604 阅读 · 0 评论 -
回溯法之0-1背包问题
最近在看回溯,感觉就是深度优先遍历,思想差不多,不过对书上的上界函数不是很懂。自己尝试用回溯写了下背包问题,感觉蛮好。注释写的很详细了。上代码。#include#define Max 100using namespace std;//背包问题,尝试用回溯int x[Max],n,wmax,w[Max],v[Max],cw=0,cv=0;//cw当前背包重量,cv当前背包价原创 2013-12-27 14:45:05 · 849 阅读 · 0 评论 -
动态规划之单调递增最长子序列
单调递增单调递减都是一样的思想,在oJ上看到的题目。自己想出来的,感觉蛮好。求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4我的第一思路就是动态规划求,后来看到还有一麻烦的思路就是求公共最长子串,和26个英文字母的顺序。。。这思路只适用这题,不适用其他的,比如后来遇到的导弹拦截问题,矩形的嵌套问题,都是一样的思路。首先是找最优子结构,开始考原创 2013-12-27 14:55:27 · 938 阅读 · 0 评论 -
动态规划之求矩阵两点最短路线
给定M*N的矩阵,其中的每个元素都是整数。你的任务是从左上角走到右下角,请找出一条最合适的道路,使得在路上被选取的数字之和尽可能的小。原创 2013-12-18 21:12:31 · 1560 阅读 · 0 评论 -
动态规划之最长公共子串(递归的备忘录写法)
#include #include #define Max 100using namespace std;//最长公共子字符串,递归的备忘录写法int c[Max][Max];string s1,s2;int fun(int i,int j){ if(c[i][j]>0)return c[i][j]; if(i<0||j<0)return 0; if(s1[i]==s2[j]原创 2013-12-17 19:32:42 · 2589 阅读 · 2 评论 -
动态规划之最大连续子数组(递归备忘录写法)
#include #define Max 100using namespace std;//最大子数组和,用递归的备忘录写法,动态规划。int b[Max];int a[]={1,12,-22,3,7,8,-14,-11,9,8};int fun(int n){ if(b[n]>0)return b[n]; if(n<0)return 0; int t=fun(n-1); i原创 2013-12-17 19:29:05 · 856 阅读 · 0 评论 -
最大连续子数组(分治法、动态规划)
输入一个整数数组,数组中有正数也有负数,一个或连续的多个整数组成一个子数组,求所有子数组的和的最大值。分治法:#include using namespace std;//分治法 最大子数组和的问题// 把一个区间分成两个相等长度的区间// 该区间的最大子数组有三种可能// 1.在左区间,不到中点// 2.在右区间,在中点之后// 3.跨越中点,一部分在左区间,一部分在右原创 2013-12-13 20:17:41 · 1378 阅读 · 0 评论 -
动态规划之最长公共子串问题
最长公共子串问题:一个给定序列的子序列是在该序列中删去若干元素后得到的序列。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。最长公共子串就是求给定两个序列的一个最长公共子序列。例如,X=“ABCBDAB”,Y=“BCDB”是X的一个子序列。刚写完0-1背包问题,感觉有些细节还是不是太清楚,又看了这题,感觉收获很大。在草稿纸上写了循环内部的过程,原创 2013-12-11 21:13:26 · 947 阅读 · 0 评论 -
关于全排列的总结
对自己所了解的进行总结,可能还有更好的算法有待学习。1.基于交换 //全排列,基于交换 static void fun1(String s, int k) { if (k == s.length()) { System.out.println(s); return; } char[] data = s.toCharArray(); for (int i = k原创 2015-10-23 10:55:22 · 610 阅读 · 0 评论