题目:
描述:
用1,2,3,…,9组成3个数abc,def和ghi,每个数字恰好用一次,要求abc:def:ghi=1:2:3。按照"abc def ghi"的格式输出所有解,每行一个解。
问题分析:
由于要进行判断是否重复,所以将每位数都存入数组,最后来筛选。
代码
tips
这段代码只是解决了问题,但是可能不是最优解
#include<stdio.h>
int main()
{
int a,b,c,abc,def,ghi;
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
for(c=1;c<=9;c++)
{
abc=a*100+b*10+c;
def=2*abc;
ghi=3*abc;
if(ghi>1000)
break;
int flag=1;
int num[9];
num[0]=a;
num[1]=b;
num[2]=c;
num[3]=def/100;
num[4]=def%100/10;
num[5]=def%10;
num[6]=ghi/100;
num[7]=ghi%100/10;
num[8]=ghi%10;
for(int i=0;i<9;i++)
{
for(int j=i+1;j<9;j++)
{
if(num[i]==num[j])
{
flag=0;
break;
}
}
if(flag==0)
break;
}
if(flag!=0)
{
printf("%d %d %d\n",abc,def,ghi);
}
}
if(ghi>1000)
break;
}
if(ghi>1000)
break;
}
return 0;
}
运行结果: