「笔试刷题」:游游的you

一、题目

游游现在有a个'y',b个'o',c个'u',他想用这些字母拼成一个字符串。

三个相邻的字母是"you"可以获得2分,两个相邻的字母是"oo",可以获得1分。

问最多可以获得多少分?

输入描述:
 

第一行一个整数qqq,代表询问次数。

接下来qqq行,每行三个正整数a,b,ca,b,ca,b,c,用空格隔开。


1≤q≤1051\leq q \leq 10^51≤q≤105
1≤a,b,c≤1091\leq a,b,c \leq 10^91≤a,b,c≤109
 

输出描述:
输出qqq行,代表每次询问的答案。

示例1

输入

3
1 1 1
2 3 2
1 5 2

输出

2
4
5

说明

 

第一次询问,可以拼出"you",获得2分。

第二次询问,可以拼出"oyouyou",获得4分。

第三次询问,可以拼出"uooooyou",获得5分。

二、思路解析

这道题也是利用到了 贪心 的思想。

因为 "you" 需要三种字母都有,而 "oo" 只需要两种字母。所以我们要优先判断是否能凑出 “you”,然后再判断 “oo”。

然后就到了计数的时候了,“you” 的个数取决于 a, b, c 中的最小值;而 “oo”即剩余的'b'字母数量减去一个 "x"(其中"x"为三种字母中数量最小的那个)。

最后输出得分即可。

具体实现请看下面代码👇

三、完整代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int q = in.nextInt();
        int a, b, c;
        int x, y;

        while(q-- != 0){
            a = in.nextInt();
            b = in.nextInt();
            c = in.nextInt();

            x = Math.min(a, Math.min(b, c));
            y = Math.max(b - x - 1, 0);
            System.out.println(x * 2 + y);
        }



    }
}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲代码的罗根

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值