h081 - 1. 程式交易
題目描述
題目描述了程式交易的策略,給定股票歷史價格和一個差價 D,模擬買賣股票以獲取利潤。策略包括在價格達到買入或賣出條件時進行交易,並計算總利潤。
解題思路
這題可以使用貪心策略解決。從第一個股票價格開始買入,然後遍歷後續的價格。如果當前價格大於等於買入價格加 D,則賣出股票並計算利潤。如果當前價格小於等於上次賣出價格減 D,則買入股票。如果最後仍然持有股票,則忽略其成本。
複雜度分析
- 時間複雜度: O(n)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int n,D,a[105],ans,v,la;
int main(){
cin >> n >> D;
for(int i=0;i<n;++i){
cin >> a[i];
if(i==0){
v=a[i];
}
else if(v&&a[i]>=v+D){
ans+=a[i]-v;
la=a[i];
v=0;
}
else if(v==0&&a[i]<=la-D){
v=a[i];
}
}
cout << ans;
}