请高手帮忙解释下这道题?
编程求:将1~9这9个数字分成3个3位数,要求第一个数是第二个数的二分之一,是第三个数的三分之一.请大家帮忙解答一下.
我这里有个参考答案,但我看不懂,希望哪位帮我解释下下,谢谢了.
#include <stdio.h>
int a[9]={1,2,3,4,5,6,7,8,9};
main()
{
int m,count=0;
for(m=123;m<=329;m++)
if(sh(m,a)&&sh(2*m,a+3)&&sh(3*m,a+6)&&))
printf("NO.%d:%d %d %d\n",++count,m,2*m,3*m);
}
int sh(int x,int *y)
{
int *p1,*p2;
for(p1=y;p1<y+3;p1++)
{ *p1=x%10;
x/=10;
for(p2=a;p2<p1;p2++)
if(*p1==0||*p2==*p1)return 0;
}
return 1;
}