#include<stdio.h>
#include<math.h>
#define N 100
int A[N]={0};
int visited[N];
int used[N]={0};
int count=1;
int num=0;
bool check(int x,int y,int z)
{
if(x+y==z)
return true;
else
return false;
}
void solve(int step)
{
int a,b,c;
a=100*A[0]+10*A[1]+A[2];
b=100*A[3]+10*A[4]+A[5];
c=100*A[6]+10*A[7]+A[8];
if(step==9 && check(a,b,c))
{
printf("%d + %d = %d count:%d\n",a,b,c,count++);
}
else
{
for(int i=1;i<=9;i++)
{
if(!visited[i])
{
visited[i]=1;
A[step]=i;
solve(step+1);
visited[i]=0;
}
}
}
}
int main()
{
solve(0);
printf("the number of different equations:%d\n",count/2);//784+152=936等价152+784=936
}
使用1-9这9个数字,组成三个三位数,使两数之和等于第三个数(回溯法)
最新推荐文章于 2025-03-27 16:30:45 发布