这道题目本身很简单,倒推回去,第K个是最优时,K+1时必然包含它.所以就从最后面的股票开始贪心法用最优解生成最优解.
难点1是去重,我直接用了个价格表去过滤,如果多个价格相等的同级最优解,就用他们中可能性最大的那个累加,其余的忽略.
难点2是大数计算.可能性可能有几十位的数字,所以封装了一个大数类.现在还不支持符号,只支持正数.后面需要用到负数的时候再说.
题目:
Buy Lo...
分类:
其他好文 时间:
2014-08-10 12:59:00
阅读次数:
436
1.3 词法分析中的‘贪心法’
每个符号应该包含尽可能多的字符。需注意的是符号中间不能有空格。
a---b等同于表达式a -- - b
但是不同于a - -- b
y/*p; /*被解释为一段注释的开始
正确有意义的写法应该是y=x/ *p或者y=x/(*p);
1.5 字符与字符串
用单引号引起的一个字符实际上代表一个整数。
用双引号引起的字符串,代表的却...
分类:
其他好文 时间:
2014-08-09 16:01:08
阅读次数:
246
相同点:贪心算法和dp都是一种递推算法,是一种解题的思想都是由局部最优解来推导全局最优解不同点:贪心算法:1.贪心算法中,作出的每步贪心决策都无法改变,因为贪心策略是由上一步的最优解推导下一步的最优解,而上一部之前的最优解则不作保留。2.由(1)中的介绍,可以知道贪心法正确的条件是:每一步的最优解一...
分类:
其他好文 时间:
2014-08-07 13:00:59
阅读次数:
178
1.背包问题:
①最优装载问题:把物体重量从小到大排列,依次选择每个物体,只顾眼前,却能得到最优解。
②部分背包问题:把物体的“价值除以重量的值”从小到大排序,一次选择每个物体(贪心只能对一个变量贪心,这是一种巧妙的转换)。
③乘船问题:只让眼前的浪费最少。(注意是让什么最少,是让浪费最少!)
2.区间相关问题(排序:排左边还是右边?):
①选择不相交区间:
②区间选点问题:
③区间...
分类:
其他好文 时间:
2014-08-05 11:18:09
阅读次数:
163
一、概念:贪心法(Greedy algorithm),是在每一步选择中都采用在当期状态下最好或最有的选择,从而希望导致结果是最好或者最优的算法。 比如在旅行推销员问题中,如果履行原每次都选择最近的城市,这就是一种贪心算法。 贪心算法在有最优子结构的问题中,尤为有效。最优子结构的意思是局部最优解...
分类:
其他好文 时间:
2014-08-04 13:24:47
阅读次数:
206
1. 词法“陷阱”= 不同于 == , 可以通过if( 1 == a )来避免& | 不同于 && ||词法分析中的“贪心法”编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部...
分类:
其他好文 时间:
2014-07-25 14:17:11
阅读次数:
296
int a=1,b=1; int c=a+++++b; printf("c=%d/n",c); 这段代码是无法通过编译的。
解释如下:
1、首先介绍一些基本的概念
1)、大嘴法,又称贪心法: 如果(编译器的)输入流截止至某个字符之前都已经被分解为一个个符号,那么下一个符号将包括从该字符起之后可能组成一个 符号的最长字符串。也就是说,每一个符号应该包含尽可能多的字符。换句话说,编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入 ,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的...
分类:
其他好文 时间:
2014-07-22 22:39:13
阅读次数:
195
贪心算法的设计思想 贪心算法在解决这个问题的策略上目光短浅,仅仅依据当前已有的信息就做出选择,并且一旦做出了选择,无论将来有什么结果,这个选择都不会改变。换言之,贪心法并非从总体最优考虑,它所做出的选择仅仅是在某种意义上的局部最优。贪心算法对于大部分的优化问题都能产生最优解,但不能总获得总体最...
分类:
其他好文 时间:
2014-07-19 00:24:13
阅读次数:
211
区间调度问题 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 有n项工作, 每项工作分别在s时间开始, 在t时间结束. 对于每项工作可以选择参与与否, 如果参与, 则全程参与.参与时间段不能重叠, 包括起始结束瞬间也不能重叠. 求最多能参与多少项工作?使用贪心法, 策略是在可选工作中, 每次都选取结束时间最早的工作.代码:/*
* main.c...
分类:
其他好文 时间:
2014-07-17 19:33:04
阅读次数:
210
硬币问题 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 有1, 5, 10, 50, 100, 500元硬币各若干枚, 现在要用这些硬币来支付A元, 最少需要多少枚硬币?假定本题至少存在一种支付方案.使用贪心算法, 优先选用最大的硬币, 并不断的调整硬币的数量.代码:/*
* main.cpp
*
* Created on: 2014....
分类:
其他好文 时间:
2014-07-17 19:24:19
阅读次数:
210