C++刷题强训(day11)--游游的水果大礼包、买卖股票的最好时机(二)、倒置字符串

目录

1、游游的水果大礼包

1.1 题目

1.2 思路

1.3 代码实现

2、买卖股票的最好时机

2.1 题目

2.2 思路

2.3 代码实现

3、倒置字符串 

3.1 题目

3.2 思路

3.3 代码实现


刷题汇总专栏:传送门!

1、游游的水果大礼包

1.1 题目

1.2 思路

读完题知道,将n个苹果和m个桃子按照一定的比例组成价值不同的一号或二号礼包,求组成礼包的最高价值。这里注意苹果或桃子没必要全用完,能用就用就好。

这题使用枚举来解,全选一号礼包,二号0个,然后一号减1,二号加1,直到2号全选。期间不断更新最大价值最后返回即可。

1.3 代码实现

#include<iostream>
using namespace std;

int main()
{
    long long n,m,a,b;
    cin >> n >> m >> a >> b;
    long long ret = 0;
    for(int x = 0;x <= min(n/2,m);x++)
    {
        int y = min(n-x*2,(m-x)/2);
        ret = max(ret,a*x+b*y);
    }
    cout << ret << endl;
    
    return 0;
}

2、买卖股票的最好时机

2.1 题目

2.2 思路

看完题目注意一点,我们可以反复买卖股票,不过在下一次购买前要把前一次的卖出。

观看示例,发现只要后面是涨就买,下降就卖,那么这样的利润就是最大的。

2.3 代码实现

#include <iostream>
using namespace std;

int main() 
{
    int n;
    cin >> n;
    int arr[n];
    for(int i=0;i < n;i++)
        cin >> arr[i];
    int sum = 0;
    for(int i = 1;i < n;i++)
    {
        if(arr[i] - arr[i-1] > 0)
            sum += arr[i] - arr[i-1];
    }
    cout << sum << endl;

    return 0;
}

3、倒置字符串 

3.1 题目

3.2 思路

这道题让我们逆置的是单词的位置,而不是字母顺序,所以我们可以现将整体逆序,再将每一个单词进行逆序,进行两次逆序,可以省去一下麻烦。

3.3 代码实现

注意:题目在并未说空格一定只有一个,也就是说两个单词间可能有多个空格

#include <iostream>
#include<algorithm>
using namespace std;

int main() 
{
    string str;
    getline(cin,str);
    reverse(str.begin(),str.end());
    int left = 0,right = 0,n=str.size();
    while(left < n)
    {
        right = left;
        while(right < n &&str[right] != ' ')
            right++;
        reverse(str.begin()+left,str.begin()+right);
        while(right < n && str[right] == ' ')
            right++; //跳过空格
        left = right;
    }
    cout << str << endl;
    
    return 0;
}


本篇完,下篇见!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值