题意:求上升序列的最大和。
思路:简单DP。两重循环:dp[i]表示以v[i]结尾的最大和,状态转移方程dp[i]=max(dp[j]+v[i],dp[i]) (在v[j]
AC代码:
#include
#include
#include
#include
using namespace std;
int main()
{
int n,dp[1005],v[1005];
whil...
分类:
其他好文 时间:
2015-07-19 11:53:09
阅读次数:
113
题目:
Write a function to find the longest common prefix string amongst an array of strings.
题意:
写出一个函数,找到一组数组中的最长公共子串。
算法分析:
需要构建两重循环。第一层是最短子串的长度,另一层是遍历字符串数组中的每个成员。
brute force的想法,以第一个字符串为标准,对于...
分类:
编程语言 时间:
2015-07-09 13:17:56
阅读次数:
138
题意:有宽度相同高度不同的长方体挨着放在一起,求能构成的面积最大的长方体
分析:也是思维的转换。这题的主思路不是dp,dp只是起一个辅助作用。具体做法:枚举每个长方体,求以这个长方体的高度为高的最大的长方体面积,不断更新答案。用一个l[i]和r[i]数组表示第i个矩形的左右比它高的远的位置,所以面积 s=a[i]*(r[i]-l[i]+1).但是直接两重循环会超时,这时用了一点dp的思想,这里用...
分类:
其他好文 时间:
2015-06-23 10:17:49
阅读次数:
154
题意:有n个监狱,共n轮,第 i 轮警察会去编号为 i 的倍数的监狱,如果是锁的就开锁,如果是开的就锁上,求n轮过后有多少犯人会逃出来
分析:这题实际上是个模拟题,因为数据很小我直接用两重循环模拟的,如果数据很大的话,就不能直接模拟了,模拟题卡时间多半是找规律。
这题的规律是:如果一个监狱被查看了偶数次的话相当于则什么都没发生,还是锁的,也就是说找没有锁上的监狱只要n以内找...
分类:
其他好文 时间:
2015-06-17 11:28:10
阅读次数:
103
导言第一次了解到逆序数是在高等代数课程上。当时想计算一个数列的逆序数直觉就是用两重循环O(n^2)暴力求解。现在渐渐对归并算法有了一定的认识,因此决定自己用C++代码小试牛刀。逆序数简介由自然数1,2…,n组成的不重复的每一种有确定次序的排列,称为一个n级排列(简称为排列);或者一般的,n个互不同元...
分类:
其他好文 时间:
2015-06-11 00:08:07
阅读次数:
186
上篇博客咱们讲了选择排序,不难发现,当数据较多时选择排序的效率就很低了。那么有没有另一种排序的方法可以提高一下效率呢?答案是肯定的。下面我们来讲一下冒泡排序。冒泡排序也是通过两重循环,外层循环和选择排序一样通过n-1次找最小(或最大)值,只是内循环的比较实现方式不同。它是通过n-1次找最大值得方式实...
分类:
编程语言 时间:
2015-06-02 10:39:07
阅读次数:
137
n个数的选择排序是一个两重循环的问题:外循环控制求最小值得次数,n个数求最小值,要用n-1循环;内循环是用来完成求最小值的过程,假定当前元素a[i]是最小值,假设内循环变量是j让a[i]与其后的所有元素a[j]逐个比较,i+1a[j]) 6 { 7 ...
分类:
编程语言 时间:
2015-06-02 09:16:38
阅读次数:
129
紫书上叫中途相遇法,还有一个名字感觉更加妥帖一点,叫:折半枚举。 有时候,当问题的规模较大时,无法枚举所有元素的组合,但能够枚举一半的元素组合,此时,将问题拆成两半后分别枚举,再合并他们的结果这一方法往往非常有效。
两重循环加二分,总复杂度为n^2logn
这里值得一提的是对集合CD的存储方式,我是用了一个有序数组,也可以用其他方式。
#include
using nam...
分类:
其他好文 时间:
2015-05-13 21:56:06
阅读次数:
138
广度优先搜索可以形成一个广度优先搜索树算法时间为O(V+E),两重循环输入:图g,起点start(int)需要的数据结构:队列Q、color数组(存放每个顶点的颜色)算法过程:1. 预处理:1)color数组的每个值都赋为white(表示没被访问过);2)队列Q为空队列2. 处理起点:1)color...
分类:
其他好文 时间:
2015-05-08 19:48:00
阅读次数:
133
Thomas H.Cormen 的《算法导论》上介绍的几个经典排序算法的Python实现。1、冒泡排序: 简单的两重循环遍历,使最小(最大)的值不断地往上升(下沉)而实现的排序,算法时间为O(n2)。 代码如下: 1 def up_sort(a): 2 # 冒泡排序 3 ...
分类:
编程语言 时间:
2015-04-29 23:17:04
阅读次数:
215