游游现在有a个'y',b个'o',c个'u',他想用这些字母拼成一个字符串。
三个相邻的字母是"you"可以获得2分,两个相邻的字母是"oo",可以获得1分。
问最多可以获得多少分?
第一行一个整数,代表询问次数。接下来行,每行三个正整数,用空格隔开。
输出行,代表每次询问的答案。
3 1 1 1 2 3 2 1 5 2
2 4 5
第一次询问,可以拼出"you",获得2分。第二次询问,可以拼出"oyouyou",获得4分。第三次询问,可以拼出"uooooyou",获得5分。
#include <iostream> using namespace std; int get_scores(int a, int b, int c) { int scores = 0; int you_num = min(min(a, b), c); int oo_num = b - you_num - 1; scores += 2 * you_num; if (oo_num > 0) scores += oo_num; return scores; } int main() { int q, a, b, c; cin >> q; for (int i = 0; i < q; i++) { cin >> a >> b >> c; cout <<get_scores(a, b, c) << '\n'; } return 0; }
public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int Q = in.nextInt(); while (Q-- > 0) { // 注意 while 处理多个 case int a = in.nextInt(); int b = in.nextInt(); int c = in.nextInt(); int t1 = Math.min(Math.min(a, b), c); int t2 = Math.max(0, b - t1 - 1); System.out.println(t1 * 2 + t2); } }