问题描述
- C++ 计算股票最大利润的代码
-
这个是学校功课,老师限制不让用array。这个program的用法是输入一串价格,最后输入-1,然后就会output最大利润。
例如我输入20,10,30,40,-1,前面几个数字分别代表第一天第二天第三天第四天股票的价格,
那么假设我在第二天买进,第四天卖出,我将获得最大利润(40-10)=30。
现在我唯一的问题是我写的代码处理不了这种情况,例如
我输入20,30,10,我这个program会把10当成最小值,然后output最大利润为
(30-10),请问各位能帮我修改代码,避免这种错处吗?
或者有其他代码能够完成这个作业?``
#include
using namespace std;
int main(){
int c(0),r(0),n1(0),min(0),max(0),l(0),s(0);
cout<<"Please enter the prices: ";while(n1!=-1){ cin>>n1; if(min==0 && n1>0) {min=n1;} c++; if(n1<=0 && n1!=-1) {cout<<"Invalid. Input again. Please make sure it's a positive number!"<<endl;r++;} else { if(n1<min && n1!=-1 && c<=l) {min=n1; s++;} if(n1>=max && (c-r)>(s+1)) {max=n1; l=c;} cout<<c<<s+1<<l<<endl; } } cout<<max<<min; cout<<endl<<"Largest amount earned: "<<(max-min)<<endl; return 0;
}
解决方案
你的算法根本就是错的。而且必须要回溯,你被你老师坑了。不要幻想有不记录下输入直接就能得到答案的算法。
至于不能用数组,你可以自己实现链表或者用vactor代替。
解决方案三:
后面的减前面的,全部减过一篇,取结果最大值
解决方案四:
请允许我说一句,你被你老师坑了。
时间: 2024-08-30 08:37:32