股票最大收益
题目:
假设知道某段连续时间内股票价格,计算通过买入卖出可获得的最大收益。
输入一个大小为 n 的数 price(p1, p2, p3, p4…….pn), pi 是第i天的股票价格。
pi 的格式为股票价格(非负整型)加上货币单位 Y 或者 S, 其中 Y 代表人民币, S 代表美元, 这里规定
1 美元可以兑换 7 人民币。
pi 样例 1:123Y 代表 123 元人民币
pi 样例 2:123S 代表 123 元美元, 可兑换 861 人民币
假设你可以在任何一天买入或者卖出胶票, 也可以选择放弃交易, 请计其在交易周期 n 天内你能获得的最大收入以人民币计算。
输入描述:
输入一个包含交易周期内各天股票价格的字符串,以空格分隔。不考虑输入异常情况。
输出描述:
输出一个整型数代表在交易周期 n 天内你能获得的最大收益,n 不能超过 10000
备注:股票价格只会用 Y 人民币或 S 美元进行输入,不考虑其他情况。
示例 1
输入:
2Y 3S 4S 6Y 8S
输出:
76
#include<iostream>
#include<vector>
#include<string>
#include<sstream>
using namespace std;
vector<int> StrToVec(string& str){
stringstream sstream(str);
string token="";
vector<int> vec_m;
vec_m.clear();
while(getline(sstream,token,' ')){
int num=0;
for(size_t i=0;i<token.size()-1;i++){
num=num*10+token[i]-'0';
}
size_t j=token.size()-1;
if(token[j]=='S'){
num*=7;
}
vec_m.push_back(num);
}
return vec_m;
}
int main(){
string str;
getline(cin,str);
size_t earn=0;
size_t pay=0;
vector<int> vec_m=StrToVec(str);
for(size_t i=0;i<vec_m.size();i++){
if(i==vec_m.size()-1 && pay!=0){
earn+=vec_m[i]-pay;
pay=0;
}
else if(i<vec_m.size()-1 && vec_m[i]>vec_m[i+1] && pay!=0){
earn+=vec_m[i]-pay;
pay=0;
}
else if(pay==0){
pay=vec_m[i];
}
}
cout<<earn<<endl;
return 0;
}