关于题目的重复问题
□□□+□□□=□□□。将数字1~9分别填入9个□中,使等式成立,且每个数字只能使用一次。例如173+286=459就是一个正确的组合,请问有多少种这样的组合?要求: (1).将所有可能的组合以等式的格式打印出来,每个占⼀一⾏行行。
(2).打印出可能组合的个数
#include<stdio.h>
int judge(int a, int b, int c) //若9个数之和为45,积为9!(362880) ,则不重复
{
char tmp_buf[9];
int sum=0;
int multiply=1;
sprintf(tmp_buf, "%d%d%d", a, b, c); //将9个数写入数组
for(int i=0; i<9; i++)
{
sum += (tmp_buf[i]-'0');
multiply *= (tmp_buf[i]-'0');
}
if(sum==45&&multiply==362880) //满足条件返回1,即为真
return 1;
else
return 0;
}
int main()
{
int i, j, k, count=0;
for(i=123; i<=864; i++) //穷举法求满足情况 ,123+864=987
{
for(j=123; j>=864; j++)
{
for(k=267; k<=987; k++)
{
if(judge(i,j,k))
if(i+j==k)
{
printf("%d+%d=%d\n", i, j, k); //打印等式
count++; //统计个数
}
}
}
}
printf("%d\n", count);
return 0;
}
现在的问题是,这样会出现重复,如173+286=459,则必定会出现286+173=459,
请问有没有什么可能避免这种重复
万分感谢!