将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成
1:2:3的比例,试求出所有满足条件的三个三位数。
例如:三个三位数192,384,576满足以上条件。
题目比较基础,自己用的回朔法,万里高楼平地起,慢慢来吧...
/* Note:Your choice is C IDE */
#define null 0
#include "stdio.h"
void inject(int N,int *nNum)
{
int sum[3],i,j,k;
if(N==0)
{
sum[0]=*nNum*100+*(nNum+1)*10+*(nNum+2);
sum[1]=*(nNum+3)*100+*(nNum+4)*10+*(nNum+5);
sum[2]=*(nNum+6)*100+*(nNum+7)*10+*(nNum+8);
if(((sum[0]<<1)==sum[1])&&((3*sum[0])==sum[2]))
{
printf("we have one of them:");
printf("%d,%d,%d\n",sum[0],sum[1],sum[2]);
}
}
else
{
for(j=0;j<9;j++)
{
if(*(nNum+j)==null)
{
*(nNum+j)=N;
inject(N-1,nNum);
*(nNum+j)=null;
}
}
}
}
main()
{
int k;
int Num[9];
for(k=0;k<9;k++)
{
Num[k]=null;
}
inject(9,Num);
}