问题描述
最长递增子序列也称 “最长上升子序列”,简称LIS ( longest increasing subsequence)。设L=是n个不同的实数的序列,L的递增子序列是这样一个子序列Lis=,其中k1
如:求一个一维数组arr[i]中的最长递增子序列的长度,如在序列{ 7, 1, 6, 5, 3, 4, 8 }中,最长递增子序列长度为4,其递增子序列为:1,3,4,8。...
分类:
其他好文 时间:
2014-05-15 15:06:59
阅读次数:
328
八皇后问题应该是回溯法的教学典范。在本科的时候,有一门课叫面向对象,最后的附录有这个问题的源代码,当时根本不懂编程,照抄下来,运行一下出了结果都很开心,哎。
皇后们的限制条件是不能同行同列,也不能同对角线。那么显然每一列上都要有一个皇后,只需要用一个一维数组记录皇后在每一行上的位置就可以了。算法的思想是:从第一行开始,尝试把皇后放到某一列上,可以用一个vis数组保存已经有皇后的列,当找到一个还没...
分类:
其他好文 时间:
2014-05-15 05:02:41
阅读次数:
261
题目链接:uva 11401 - Triangle Counting
题目大意:有多少种方法可以从1,2,3...n中选出3个不同的数组成三角形,给出n,求种数。
解题思路:加法原理,设最大边为x的三角形有c(x)个,那么另外两条边长分别为y和z,根据三角形的形式可以的y+z>x,所以z的范围即为x?yzx
根据这个不等式可以得到每个y值所对应的z值个数,为等差数列,所以
c(...
分类:
其他好文 时间:
2014-05-15 03:03:34
阅读次数:
248
散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构。也就是说,它通过把键值通过一个函数的计算,映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。
一个通俗的例子是,为了查找电话簿中某人的号码,可以创建一个按照人名首字母顺序排列的表(即建立人名x到首字母F(x)的一个函数关系),在首...
分类:
编程语言 时间:
2014-05-15 02:27:50
阅读次数:
497
题意:最大连续子序列和,在一个数组中找到和最大的连续子数组
思路:dp, 对于第i个数,有两种选择:把它加入在子数组里,不加入子数组(子数组到此结束)
加不加入子数组,要比较它加入前后子数组的总和是变大了还是变小了,如果变大则加入,变小则不加入
所以,我们需要记录以i-1结尾的子数组的总和,最后的结果在这些总和中取最大的那个
f[i] = max(f[i-1]+a[i],f[i-1]);
max({f[i]})
实现时用两个变量,一个保存f[i-1],一个保存目前为止最大的f[i]
复杂度:时间O(n),空...
分类:
其他好文 时间:
2014-05-14 21:53:14
阅读次数:
250
1. 结构的基础知识
跟数组一样是成员的集合,但与数组有很大的区别,结构的元素不能通过下标法来访问,因为各个成员的大小可能不同,但是数组可以,因为数组元素保持一致。
1.1 结构声明
struct tag {member-list }
variable-list ;
上面黑色部分是可选部分,但是必须同时出现两个。
实例一:下面是实例:
struct{
i...
分类:
编程语言 时间:
2014-05-14 21:47:06
阅读次数:
522
第6章分散和聚集6.1概述分散/聚集I/O是使用多个而不是单个缓冲区来保存数据的读写方法。一个分散的读取就像一个常规通道读取,只不过它是将数据读到一个缓冲区数组中而不是读到单个缓冲区中。同样地,一个聚集写入是向缓冲区数组而不是向单个缓冲区写入数据。分散/聚集I/O对于..
分类:
其他好文 时间:
2014-05-14 18:34:06
阅读次数:
215
1.对于有G个灰度级(一般是256)大小的M*N图像,创建一个长为G的数组H,并初始化为0.2.形成直方图:扫描每个像素,增加相应的H成员,当像素p具有亮度gp时,做
H[gp] = H[gp] + 13.形成累积直方图Hc: Hc[0] = H[0] Hc[p] = Hc[p-1]+Hc[p], ...
分类:
其他好文 时间:
2014-05-14 17:59:21
阅读次数:
219
问题:保存的cookie用firefox怎么刷新都刷不出来,而把cookie的值改为字符串或数字时正常,果断把数据源用json编码,然后存储,果然出来了。解决方法:在保存cookie值为对象或数组时,最好用json编码。
分类:
其他好文 时间:
2014-05-14 16:29:02
阅读次数:
212