目录
031:游游的水果大礼包
032:买卖股票的最好时机(二)
033:倒置字符串
031:游游的水果大礼包
游游的水果大礼包 (nowcoder.com)
题目:
题解:
枚举:依次枚举1号礼包的数量,根据剩下的苹果桃子数量,计算出2号礼包的数量,计算每种组合的价值,记录下最大价值。
#include<iostream>
#include<algorithm>
using namespace std;long long n,m,a,b;
int main()
{cin>>n>>m>>a>>b;long long ret=0;for(long long x=0;x<=min(n/2,m);x++){long long y=min(n-2*x,(m-x)/2);ret=max(ret,a*x+b*y);}cout<<ret<<endl;return 0;
}
032:买卖股票的最好时机(二)
买卖股票的最好时机(二)_牛客题霸_牛客网 (nowcoder.com)
题目:
题解:
动态规划:
1.状态表示:dp[0][i]表示:i位置为卖出状态。dp[1][i]表示:i位置为买入状态。
2.状态转移方程(根据当前状态划分情况):如图
#include <iostream>
#include<vector>
using namespace std;int main()
{int n=0;cin>>n;int prices[n];for(int i=0;i<n;i++){cin>>prices[i];}vector<vector<int>> dp(2,vector<int>(n));dp[0][0]=0;dp[1][0]=-prices[0];for(int i=1;i<n;i++){dp[0][i]=max(dp[0][i-1],dp[1][i-1]+prices[i]);dp[1][i]=max(dp[0][i-1]-prices[i],dp[1][i-1]);}int ret=0;for(int i=0;i<n;i++){ret=max(ret,dp[0][i]);}cout<<ret<<endl;return 0;}
033:倒置字符串
倒置字符串_牛客题霸_牛客网 (nowcoder.com)
题目:
题解:
找规律:先整体逆置,再划分单词,单独逆置。(注意:从单词首字母开始,到第一个空格的区间进行逆置,逆置内容不会包括空格的)
#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
string s;int main()
{getline(cin,s);reverse(s.begin(),s.end());int left=0;int n=s.size();while(left<n){int right=left;while(right<n && s[right]!=' '){right++;}reverse(s.begin()+left,s.begin()+right);while(right<n && s[right]==' '){right++;}left=right;}cout<<s<<endl;return 0;
}