2 u013388899 u013388899 于 2014.01.05 20:02 提问

1到9组成3个三位数,每个数字恰好使用一次,要求3个数的比满足1:2:3,然后输出。

1到9组成3个三位数,每个数字恰好使用一次,要求3个数的比满足1:2:3,然后输出。这个怎么入手?

3个回答

DoctorCZM
DoctorCZM   2014.01.08 21:48

经过分析发现,这三个数的中最小的那个数的百位只能在(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是否有重复数字,若无则为所求
}
}
}
以上办法是笨了点,希望对您有帮助!

DoctorCZM
DoctorCZM 这样的确缩小的范围,另外一个问题是,接下来怎么做,如果的是从123到329进行循环,然后再扩大2、3倍,再求三个数中没有相同的数字,这想法是不错的。
接近 4 年之前 回复
mugua521
mugua521 最小数123,最大数987/3=329,范围是不是更小了,是不是可以更快速一点找到3个数
接近 4 年之前 回复
u013316504
u013316504   2014.01.05 20:25

其实这种问题有个好办法,那就是暴力法,
虽然看起来不高端,但绝对好用,而且时间复杂度也不高。

可否明白?

A8765498135498432789
A8765498135498432789   2014.01.06 14:46

这种问题 你百度下 代码不就有了吗。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!