一、题目
游游现在有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"为三种字母中数量最小的那个)。
最后输出得分即可。
具体实现请看下面代码👇

文章讲述了如何利用贪心策略解决一个字符串问题,通过计算you和oo的最大得分,其中you由三种字母组成,oo由两种。给出了一个Java程序实例来求解特定字母组合的最高分数。
最低0.47元/天 解锁文章
445

被折叠的 条评论
为什么被折叠?



