第一行输入整数
,表示测试用例数量。
每个测试用例一行输入四个整数
。
对每个测试用例输出一行一个整数,表示 Alex 获胜的翻牌顺序数量。
5 3 8 2 6 1 1 1 1 10 10 2 2 1 1 10 10 3 8 7 2
2 0 4 0 2
考虑第一个测试案例,当Alex开始时有牌值为和
的牌,而Bob开始时有牌值为
和
的牌。游戏可能以
种不同的方式进行:
- Alex 翻,Bob 翻
。Alex 赢了第一轮。然后,Alex 翻
,Bob 翻
。Alex 同样赢得第二轮。由于 Alex 赢了
个回合,所以他赢得了游戏。
- Alex 翻转,Bob 翻转
。Bob赢得第一轮。然后,Alex 翻
,Bob 翻
。Alex 赢第二轮。由于双方赢得的回合数相同,因此没有人获胜。
- Alex 翻转,Bob 翻转
。Alex 赢了第一轮。然后,Alex 翻出
,Bob 翻出
。Alex 同样赢得第二轮。由于 Alex 赢了
轮,所以他赢得了游戏。
- Alex 翻转,Bob 翻转
。Alex 赢了第一轮。然后,Alex 翻
,Bob 翻
。Bob赢得这一轮。由于双方赢得的回合数相同,因此没有人获胜。
所以,最终Alex会赢的可能情况只有种。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
while (t-- > 0) {
int a1 = scanner.nextInt();
int a2 = scanner.nextInt();
int b1 = scanner.nextInt();
int b2 = scanner.nextInt();
int count = 0;
// Alex的两种翻牌顺序
int[][] alexOrders = {{a1, a2}, {a2, a1}};
// Bob的两种翻牌顺序
int[][] bobOrders = {{b1, b2}, {b2, b1}};
// 遍历所有可能的翻牌顺序组合
for (int[] alex : alexOrders) {
for (int[] bob : bobOrders) {
// 计算双方赢得的回合数
int alexWins = 0;
int bobWins = 0;
if (alex[0] > bob[0]) {
alexWins++;
} else if (alex[0] < bob[0]) {
bobWins++;
}
if (alex[1] > bob[1]) {
alexWins++;
} else if (alex[1] < bob[1]) {
bobWins++;
}
// 当Alex赢得的回合数多于Bob时,才是Alex获胜
if (alexWins > bobWins) {
count++;
}
}
}
System.out.println(count);
}
scanner.close();
}
}