1到9组成3个三位数,每个数字恰好使用一次,要求3个数的比满足1:2:3,然后输出。这个怎么入手?
经过分析发现,这三个数的中最小的那个数的百位只能在(1, 2, 3)中取,然后从利用暴力法求出第一个数a1,将a1*2、a1*3算出,是否有重复数字,有重复,直接下一组数。
如下伪代码:
for(int i = 1; i <= 3; ++ i)
{
for(int j = 1; j <= 9; ++ j)
{
if(i == j) continue;
for(int k = 1; k <= 9; ++ k)
{
if(k == i || k == j) continue;
a1 = 100*i + 10*j +k;
a2 = 2*a1;
a3 = 3*a1;
//判断a1, a2, a3是否有重复数字,若无则为所求
}
}
}
以上办法是笨了点,希望对您有帮助!
其实这种问题有个好办法,那就是暴力法,
虽然看起来不高端,但绝对好用,而且时间复杂度也不高。
可否明白?
这种问题 你百度下 代码不就有了吗。