#include<iostream>
#include<stdio.h>
using namespace std;
int a[10];//九个空格表示为九个箱子
int book[10];
int sum1,sum2,sum3,zsum;
void bfs(int step); //表示在第几个箱子前面
int main()
{
bfs(1);
cout<<zsum/2<<endl;
getchar();
getchar();
return 0;
}
void bfs(int step)
{
if(step==10)
{
sum1=a[1]*100+a[2]*10+a[3];
sum2=a[4]*100+a[5]*10+a[6];
sum3=a[7]*100+a[8]*10+a[9];
if(sum1+sum2==sum3)
{
zsum++;
cout<<zsum<<endl;
cout<<a[1]<<a[2]<<a[3]<<'+'<<a[4]<<a[5]<<a[6]<<'='<<a[7]<<a[8]<<a[9]<<endl;
}
return ;//返回上一个函数最后的地方;
}
else
{
for(int i=1;i<=9;i++)
{
if(book[i]==0)
{
a[step]=i;//可以想象成走到第几个箱子哪里扔进了第几个数字
book[i]=1;//从这个节点以下要标记这个数字已经被用过了
bfs(step+1);
book[i]=0;//当返回过后在下一个平行节点要从中拿回来那个数字
}
}
}
}
#include<stdio.h>
using namespace std;
int a[10];//九个空格表示为九个箱子
int book[10];
int sum1,sum2,sum3,zsum;
void bfs(int step); //表示在第几个箱子前面
int main()
{
bfs(1);
cout<<zsum/2<<endl;
getchar();
getchar();
return 0;
}
void bfs(int step)
{
if(step==10)
{
sum1=a[1]*100+a[2]*10+a[3];
sum2=a[4]*100+a[5]*10+a[6];
sum3=a[7]*100+a[8]*10+a[9];
if(sum1+sum2==sum3)
{
zsum++;
cout<<zsum<<endl;
cout<<a[1]<<a[2]<<a[3]<<'+'<<a[4]<<a[5]<<a[6]<<'='<<a[7]<<a[8]<<a[9]<<endl;
}
return ;//返回上一个函数最后的地方;
}
else
{
for(int i=1;i<=9;i++)
{
if(book[i]==0)
{
a[step]=i;//可以想象成走到第几个箱子哪里扔进了第几个数字
book[i]=1;//从这个节点以下要标记这个数字已经被用过了
bfs(step+1);
book[i]=0;//当返回过后在下一个平行节点要从中拿回来那个数字
}
}
}
}