2015小米暑期实习笔试题_风口的猪-中国牛市(dp)
输入数值范围:2<=n<=100,0<=prices[i]<=100
输入例子:
3,8,5,1,7,8
输出例子:
12
代码:
#include <iostream> #include <cmath> #include <vector> using namespace std; vector<int> prices; int calculateMax(vector<int> prices) { int i,nmin,nmax,len,ans; len=prices.size(); int *lhs=new int[len]; int *rhs=new int[len]; lhs[0]=0; nmin=prices[0]; for(i=1;i<len;i++) { lhs[i]=max(lhs[i-1],prices[i]-nmin); if(prices[i]<nmin) nmin=prices[i]; // cout<<"lhs "<<i<<" "<<lhs[i]<<endl; } rhs[len-1]=0; nmax=prices[len-1]; for(i=len-2;i>=0;i--) { rhs[i]=max(rhs[i+1],nmax-prices[i]); if(prices[i]>nmax) nmax=prices[i]; // cout<<"rhs "<<i<<" "<<rhs[i]<<endl; } ans=0; for(i=0;i<len;i++) if((lhs[i]+rhs[i])>ans) ans=lhs[i]+rhs[i]; return ans; } int main() { int m,len; while(cin>>m) prices.push_back(m); cout<<calculateMax(prices)<<endl; return 0; }
下面是去掉注释的测试截图,可以直观一点
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。