习题2-6 排列
用 1,2,3…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必太动脑筋。
解析:因为搜索范围是100~999而已,所以提示的意思大概就是让我们直接用暴搜找出符合条件的数就好了。即使是暴搜我们还是可以将范围再缩小一点,根据题目要求,可以用到的最小的数(作为abc)是123,最大的数(作为ghi)是987,由最大数可以根据3个数的比例推算出最小数abc的上限为987÷3=329,因此最小数abc的范围是123~329(如果不缩小范围还需要加一个判断ghi是否大于1000的判断条件,稍加思考即可发现超过329的三位数abc绝大部分对应的三位数ghi都超过了1000,不缩小范围浪费了很多时间)。题目要求1~9这9个数字不能每个只能出现一次,那么输出条件就是三个三位数拆分后的和要正好等于45(1+2+…+9=45)。
#include<stdio.h>
int main()
{
int i,j,k;
for(i=123;i<=329;i++)
{
j=i*2;
k=i*3;
if(i/100+i/10%10+i%10+j/100+j/10%10+j%10+k/100+k/10%10+k%10==45)
printf("%d %d %d\n",i,j,k);
}
return 0;
}