动态规划有疑惑
题目
思路
- 直接暴力循环遍历
- 参考官网的题解
代码
#include<iostream>
#include<vector>
using namespace std;
int maxProfit(vector<int>& prices) {
int profit=0,minPrice=10000;
int size=prices.size();
for(int i=0;i<size;i++){
if(prices[i]<minPrice){
minPrice=prices[i];
int maxPrice=minPrice;
for(int j=i+1;j<size;j++){
if(prices[j]>maxPrice){
maxPrice=prices[j];
}
}
if(maxPrice-minPrice>profit)
profit=maxPrice-minPrice;
}
}
return profit;
}
int maxProfit1(vector<int>& prices) {
int profit=0,minPrice=10000;
for(int pri:prices){
minPrice=min(pri,minPrice);
profit=max(profit,pri-minPrice);
}
return profit;
}
int maxProfit2(vector<int>& prices) {
int profit=0;
int size=prices.size();
for(int i=1;i<size;i++){
profit+=max(0,prices[i]-prices[i-1]);
}
return profit;
}
int maxProfit3(vector<int>& prices) {
int buy1=-prices[0],buy2=-prices[0];
int sell1=0,sell2=0;
for(int price:prices){
buy1=max(buy1,-price);
sell1=max(sell1,buy1+price);
buy2=max(buy2,sell1-price);
sell2=max(sell2,buy2+price);
}
return sell2;
}
int main(){
vector<int> prices;
prices.emplace_back(2);
prices.emplace_back(4);
prices.emplace_back(1);
int p=maxProfit1(prices);
cout<<p<<endl;
return 0;
}