您的位置:首页 > 其它

股票最大收益问题及数组最大差值问题

2015-04-30 16:51 309 查看
</pre><pre code_snippet_id="656629" snippet_file_name="blog_20150430_2_4601523" name="code" class="cpp">
#include<stdio.h>#include <stdlib.h>//说明 只有返回值为零 则表示没有收益 或者没有找到最多的差值哦int max_profit(int a[],int length)  //n 天中 买卖股票最大收益 不限次数{if(length==0) return 0;int max = 0;int index_minbuy = 0;for(int i =1;i<length;i++){if(a[i]<a[i-1]){//贪心法,第I天跌了 则这个时候则应该在第i -1 天的时候 卖出 然后在第I天买入max += a[i-1] - a[index_minbuy];index_minbuy = i;}}//最后一天要单独计算if(a[length -1] > a[index_minbuy])max += a[length - 1] - a[index_minbuy];return max;}//最有解法二 计算每个相邻的差,大于零 则利润累加   <span style="font-family: Arial, Helvetica, sans-serif;">n 天中 买卖股票最大收益 不限次数</span>int max_p(int a[],int length){if(length==0) return 0;int max = 0;for(int i =1;i<length;i++){if(a[i-1] <a[i]){max += a[i] - a[i-1];}}return max;}int findMaxDiff_1(int* a,int lengh) //右边>左边 求一个数组中最大差值{int i = 0;if(lengh==0||lengh==1) return 0;if(lengh==2){return (a[2] - a[1] > 0?a[2] - a[1]:0);}int min = a[0];int max = a[2] - a[1];for(int i =2;i<lengh;i++){if(a[i-1]<min){min = a[i-1];}if(a[i] - min >max){max = a[i] - min;}}return max;}int findMaxDiff_2(int* a,int lengh) //左边 > 右边   <span style="font-family: Arial, Helvetica, sans-serif;">求一个数组中最大差值 </span>{int i = 0;if(lengh==0||lengh==1) return 0;if(lengh==2){return (a[1] - a[2] > 0?a[1] - a[2]:0);}int max = a[0];int max_ = a[1] - a[2];for(int i =2;i<lengh;i++){if(a[i-1]>max){max = a[i -1];}if(max - a[i] >max_ ){max_ = max - a[i];}}return max_;}int max_two_profit(int a[],int length)  //股票最大收益 只允许最多买卖两次{if(length==0||length==1) return 0;if(length==2){return (a[2] - a[1] > 0)?a[2] - a[1]:0;}int max_pro = 0;for(int i =1;i<length-1;i++){if(findMaxDiff_1(a,i+1) + findMaxDiff_1(a+i,length - i) > max_pro)max_pro = findMaxDiff_1(a,i+1) + findMaxDiff_1(a+i,length - i);}return max_pro;}int main(){int a[] = {1,4,2,8,100};printf("%d\n",max_profit(a,5));printf("%d\n",max_p(a,5));printf("%d\n",findMaxDiff_2(a,5));printf("%d\n",max_two_profit(a,5));system("pause");return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  股票