凑算式
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中AI代表19的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
#include<stdio.h>
int rel[9]={0};
int num[9]={0};
int sum=0;
void count()
{
int a=num[0];
int b=num[1];
int c=num[2];
int d=num[3]*100+num[4]*10+num[5];
int e=num[6]*100+num[7]*10+num[8];
/* ac+b+dc/e=10*c
ace+be+dc=10*c*e*/
if(10*c*e==a*c*e+b*e+d*c)
{
sum++;
}
}
void check(int i)
{
int j,a;
if(i>=9)
{
count();
return ;
}
for(a=0;a<9;a++)
{
if(rel[a]!=1)
{
rel[a]=1;
num[a]=i+1;
check(i+1);
rel[a]=0;
}
}
}
int main()
{
int n;
check(0);
printf("%d",sum);
return 0;
}
思路:深度搜索,然后注意除法转化成乘法,不然会因为范围而导致结果错误。正确结果是29.!!!!!!!