#include<stdio.h>
int a[10],book[10] = {0},total = 0;
void dfs(int step)
{
int i;
if(step == 10)
{
if(a[1]*100+a[2]*10+a[3] + a[4]*100+a[5]*10+a[6] == a[7]*100+a[8]*10+a[9])
{
total++;
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],a[10]);
}
return ;
}
for(i = 1; i < 10; i++)
{
if(book[i] == 0) // 扑克牌还在手上
{
a[step] = i; //把扑克牌 i 放入 到第 step 个盒子中
book[i] = 1; // 扑克牌不在手上
dfs(step+1);
//这里是非常重要的一步,一定要将刚才尝试的扑克牌收回,才能进行下一次尝试
book[i] = 0;
}
}
return ;
}
int main()
{
dfs(1);
printf("total = %d\n",total / 2); // 有重复的
return 0;
}