风口的猪-中国牛市

题目描述



风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<=100,0<=prices[i]<=100



示例1




输入



3,8,5,1,7,8



输出



12


 

枚举:由外到里,一点点把所有的情况都枚举出来,而且把实际问题抽象为数学问题

把问题抽象为取数问题即可

 情况很多的枚举,把问题分细,就好枚举了。



1 class Solution {
2 public:
3 /**
4 * 计算你能获得的最大收益
5 *
6 * @param prices Prices[i]即第i天的股价
7 * @return 整型
8 */
9 /*
10 枚举所有的买入点和卖出点
11 有一个要求
12 其实就是在一串数中选四个数
13 并且第二个大于第一个
14 第四个大于第三个
15 */
16 int calculateMax(vector<int> prices) {
17 //一次都不买
18 int ans=0;
19 //买一次
20 for(int i=0;i<prices.size();i++){
21 for(int j=i+1;j<prices.size();j++){
22 if(prices[j]-prices[i]>ans){
23 ans=prices[j]-prices[i];
24 }
25 }
26 }
27 //买两次
28 for(int i1=0;i1<prices.size();i1++){
29 for(int i2=i1+1;i2<prices.size();i2++){
30 for(int i3=i2+1;i3<prices.size();i3++){
31 for(int i4=i3+1;i4<prices.size();i4++){
32 if(prices[i4]-prices[i3]+prices[i2]-prices[i1]>ans){
33 ans=prices[i4]-prices[i3]+prices[i2]-prices[i1];
34 }
35 }
36 }
37 }
38 }
39 return ans;
40 }
41 };