欢乐赛#54 T2 题解 100% AC
2025-08-25 16:22:47
发布于:江苏
10阅读
0回复
0点赞
核心算法解析
-
积分映射规则:
- 普通牌(3~13):
- 特殊牌:
-
特殊牌型处理:
- 炸弹(四张相同):
- 王炸(同时含14和15):
- 炸弹(四张相同):
-
示例验证:
- 输入
1 1 1 1
: - 输入
1 1 14 15
:
- 输入
该算法时间复杂度,空间复杂度,完美满足题目约束条件。
代码部分
#include <bits/stdc++.h>
using namespace std;
// 牌面点数转积分的映射函数
int get(int num) {
if (num >= 3 && num <= 13) return num; // 3~13牌面直接作为积分
else if (num == 1) return 15; // A的积分为15
else if (num == 2) return 16; // 2的积分为16
else if (num == 14) return 20; // 小王的积分为20
else if (num == 15) return 25; // 大王的积分为25
return 0; // 无效输入返回0
}
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d; // 输入四个有序牌面
int p1 = get(a), p2 = get(b), p3 = get(c), p4 = get(d);
int total = p1 + p2 + p3 + p4;
bool flag = (a == b && b == c && c == d); // 炸弹判定
bool h14 = (a == 14 || b == 14 || c == 14 || d == 14); // 存在小王
bool h15 = (a == 15 || b == 15 || c == 15 || d == 15); // 存在大王
bool flag2 = h14 && h15; // 王炸判定
if (flag) total *= 5; // 炸弹规则
else if (flag2) total += 160; // 王炸规则
cout << total;
return 0;
}
这里空空如也
有帮助,赞一个