P2911 牛骨头题解

题目传送门

总结:
1、桶,还是用桶,这次桶存的是三层循环遍历出来的所有可能点数和。记录每个点数和出现多少次!
2、然后一次遍历,找出最大的是哪个,最大的那个不要某个数字出现的最多次数,而是要是哪个数字,这个要注意。

#include <bits/stdc++.h>

using namespace std;
const int N = 40 * 40 * 40 + 10;
int b[N];
int MAX;
int res;

int main() {
    //三个骰子 tóu zi
    int x, y, z;
    cin >> x >> y >> z;
    //骰子上数字和的桶
    for (int i = 1; i <= x; i++)//1
        for (int j = 1; j <= y; j++)//2
            for (int k = 1; k <= z; k++)//3
                b[i + j + k]++;

    //不是去求频率最大值是什么,而求频率最大值对应的是哪个数字,汗~
    for (int i = 4; i <= x + y + z; i++)
        //记录两个值噢~
        if (b[i] > MAX) res = i, MAX = b[i];
    //输出大吉
    cout << res << endl;
    return 0;
}
原文地址:https://www.cnblogs.com/littlehb/p/15039441.html