将1-9填入 下面的 空格里,使得等式成立
[ ][ ][ ]+[ ][ ][ ]=[ ][ ][ ]
#include
int a[10],book[10],ans;
void dfs(int step)
{
int i;
if(step==10)
{
if(a[1]*100+a[2]*10+a[3]*1+a[4]*100+a[5]*10+a[6]==a[7]*100+a[8]*10+a[9]*1)//判断是否相等如果相等输出
{
ans++;
printf("%d%d%d+%d%d%d=%d%d%d\n",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
}
return ;
}
for(i=1; i<=9; i++)
{
if(book[i]==0)//如果step是空的,将i放到a[step]里
{
a[step]=i;
book[i]=1;//
dfs(step+1);//递归调用函数找出符合条件的数字
book[i]=0;
}
}
return ;
}
int main()
{
dfs(1);//将第一步放到1那,从一开始
printf("%d\n",ans/2);
getchar();
}