用0,1,2,……,9这十个数字组成一个加法竖式,每个数字只能用一次且全部使用!C语言编译!
#include<stdio.h>
int main()
{
int a,b,c,d,e,f,g,h,i,j,arr[10]={0},n=0;
g=1;arr[1]=1;
for(a=5;a<10;a++)
{arr[a]=1;
for(b=0;b<10;b++)
if(!arr[b])
{arr[b]=1;
for(c=0;c<10;c++)
if(!arr[c])
{arr[c]=1;
for(d=a+1;d<10;d++)
if(!arr[d])
{arr[d]=1;
for(e=0;e<10;e++)
if(!arr[e])
{arr[e]=1;
for(f=0;f<10;f++)
if(!arr[f])
{arr[f]=1;
for(h=0;h<10;h++)
if(!arr[h])
{arr[h]=1;
for(i=0;i<10;i++)
if(!arr[i])
{arr[i]=1;
j=45-a-b-c-d-e-f-g-h-i;
if(j<10&&100*a+10*b+c+100*d+10*e+f==1000+100*h+10*i+j)
{n++;
printf(" %d%d%d\n+)%d%d%d\n-----\n %d%d%d%d\n\n",a,b,c,d,e,f,g,h,i,j);
}
arr[i]=0;
}
arr[h]=0;
}
arr[f]=0;
}
arr[e]=0;
}
arr[d]=0;
}
arr[c]=0;
}
arr[b]=0;
}
arr[a]=0;
}
printf("Total=%d\n",n);
getch();
return 0;
}