这个题目的代码是很简练的,但是有第二问,就是给出最佳的序列,我目前还没写出好的算法。
“逢低吸纳”是炒股的一条成功秘诀。如果你想成为一个成功的投资者,就要遵守这条秘诀:
"逢低吸纳,越低越买"
这句话的意思是:每次你购买股票时的股价一定要比你上次购买时的股价低.按照这个规则购买股票的次数越多越好,看看你最多能按这个规则买几次。
给定连续的N天中每天的股价。你可以在任何一天购买一次股票,但是购买时的股价一定要比你上次购买时的股价低。写一个程序,求出最多能买几次股票。
以下面这个表为例, 某几天的股价是:
天数 1 2 3 4 5 6 7 8 9 10 11 12股价 68 69 54 64 68 64 70 67 78 62 98 87
这个例子中, 聪明的投资者(按上面的定义),如果每次买股票时的股价都比上一次买时低,那么他最多能买4次股票。一种买法如下(可能有其他的买法):
天数 2 5 6 10股价 69 68 64 62
- #!/usr/bin/perl -w
- use strict;
- my @stock = (68, 69 ,54 ,64, 68, 64, 70, 67, 78, 62, 98, 87);
- my @f;
- $f[0] = 0;
- my @result;
- $result[0] = ();
- for ( my $x = @stock-1; $x >=0; $x--){
- for(my $i = 1; $i <= @f; $i++ ){
- if($stock[$x] > $f[$i-1] and (!defined($f[$i]) or $stock[$x]<$f[$i])){
- print "fill $i with $stock[$x] \n";
- $f[$i] = $stock[$x];
- push(@{$result[$i]}, $f[$i]);
- # $repeat[$i]+= $repeat[$i-1];
- }
- }
- }
- print "@f \n";
阅读(2129) | 评论(0) | 转发(1) |