题目描述:
现在小学的数学题目也不是那么好玩的。看看这个寒假作业:
□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □
每个方块代表1~13中的某一个数字,但不能重复。比如:6 + 7 = 139 - 8 = 13 * 4 = 1210 / 2 = 5
以及:7 + 6 = 139 - 8 = 13 * 4 = 1210 / 2 = 5
就算两种解法。(加法,乘法交换律后算不同的方案)
你一共找到了多少种方案?
输入:
输出:
请填写表示方案数目的整数。
#include<stdio.h>
int a[14], v[14];
int c=0;
void dfs( int s){
int i;
if(s>3&&a[1]+a[2]!=a[3])return;//第一个算数不满足
if(s>6&&a[4]-a[5]!=a[6])return;//第二个算数不满足
if(s>9&&a[7]*a[8]!=a[9])return ;
if(s>12&&a[12]*a[11]==a[10]){//注意把除法变成乘法
c++;
return;
}
for( i=1;i<14;i++){
if(!v[i]){
v[i]=1;
a[s]=i;
if(s<13)//判断是否还可以往下找
dfs(s+1);
v[i]=0;
}
}
}
int main(){
dfs(1);
printf("%d",c);
return 0;
}