凑算式
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
这题和我上一次写的组合一样都是知识遍历,然后有个标记函数,有就不用标记出来,没有就标记出来,然后放入要等于的算式就可以了。
#include<stdio.h>
int a[9]={0},sum=0;//a【9】用于标记
float b[9];//放入1-9随机组合的数字的结果
void fun(int n)
{
if(n==9){
if(b[0]+b[1]/b[2]+(b[3]*100+b[4]*10+b[5])/(b[6]*100+b[7]*10+b[8])==10)
sum+=1;
}
else{
int i;
for(i=0;i<9;i++){//for循环遍历
if(a[i]==0){//符合条件,就是1-9中这个数字没有被使用过
a[i]=1;//标记为使用
b[n]=i+1;//赋予值
fun(n+1);//递归自身,赋予下一个数值
a[i]=0;//不使用这个值,结束标记
}
}
}
}
int main()
{
fun(0);
printf("%d",sum);
return 0;
}