枚举求不同数字组合乘积最大值

求用1-6的6个数字组成一个一位数*一个两位数*一个三位数(6个数字不能重复)得到的最大乘积。提示用枚举和桶计数相关的方法,孩子在学编程,碰到了这题,自己凭数学知识知道知道是多少,但不会编码,我也是菜鸟),请教一下

思路是枚举 6 个数分别是多少。显然这个思路并不是最快的,但是编程复杂度低,不用动脑,并且对付这样规模的数据绰绰有余。

#include <bits/stdc++.h>
using namespace std;
int ans = 0;
int main() {
    for (int i = 1; i <= 6; i++)
        for (int j = 1; j <= 6; j++)
            if (i != j)//这些 if 保证数字互不相同
                for (int k = 1; k <= 6; k++)
                    if (i != k && j != k)
                        for (int o = 1; o <= 6; o++)
                            if (i != o && j != o && k != o)
                                for (int p = 1; p <= 6; p++)
                                    if (i != p && j != p && k != p && o != p)
                                        for (int q = 1; q <= 6; q++)
                                            if (i != q && j != q && k != q && o != q && p != q)
                                                ans = max(ans, i * (j * 10 + k) * (o * 100 + p * 10 + q));
    printf("%d", ans);
    return 0;
}

结果是 134472 = 6 * 52 * 431