凑算式
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
DFS
#include<cstdio>
int sum=0,k[20];
int check()//判断是否成立
{
double x=k[0]+k[1]*1.0/k[2]+(k[3]*100+k[4]*10+k[5])*1.0/(k[6]*100+k[7]*10+k[8]);
if(x==10.0)
return 1;
return 0;
}
int repeat(int num)
{
for(int i=num-1;i>=0;--i)//是否存在重复的数字
{
if(k[num]==k[i])
return 0;
}
return 1;
}
void dfs(int num)
{
if(num==9)//num==9时,就代表9个数字已经全部存储在k数组里
{
if(check())
++sum;
return ;
}
for(int i=1;i<10;++i)
{
k[num]=i;
if(repeat(num))
dfs(num+1);
}
}
int main()
{
dfs(0);
printf("%d\n",sum);
return 0;
}