1 条题解
-
0
练61.2 掷骰子
解题思路
枚举三个骰子的所有点数组合,按总和计频次;升序检查频次,严格更高才更新,保证同频取较小和。
正确性说明
按顺序完成所述运算后,每个输入元素都被处理在相应位置或统计项中。保存的中间状态与已处理数据对应,最终输出与题目定义一致。
易错点
所有组合等概率,所以出现次数比较等于概率比较。
复杂度
时间O(abc),空间O(a+b+c)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int a, b, c; cin >> a >> b >> c; vector<int> cnt(a + b + c + 1); for (int i = 1; i <= a; i++) for (int j = 1; j <= b; j++) for (int k = 1; k <= c; k++) cnt[i + j + k]++; int ans = 3; for (int s = 4; s <= a + b + c; s++) if (cnt[s] > cnt[ans]) ans = s; cout << ans << "\n"; return 0; }
- 1