1285: [蓝桥杯2016初赛]寒假作业
题目描述
现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:
每个方块代表1~13中的某一个数字,但不能重复。
比如:
6 + 7 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
以及:
7 + 6 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
就算两种解法。(加法,乘法交换律后算不同的方案)
你一共找到了多少种方案?
输出格式
请填写表示方案数目的整数。
#include<stdio.h>
#define bool char
#define true 1
#define false 0
bool num[13];
int res=0;
int a[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
bool check()
{
if
( a[0]+a[1] == a[2] && a[3]-a[4] == a[5] && a[6]*a[7] == a[8] && a[11]*a[10] == a[9] )
{
return true;
}
return false;
}
void dfs(int u)
{
if(u==13)
{
if(check())
{
res++;
}
return;
}
int i;
for(i=0;i<13;i++)
{
if(num[i] == false)
{
num[i] = true;
a[u] = i+1;
dfs(u+1);
num[i] = false;
}
}
return;
}
int main()
{
dfs(0);
printf("%d",res);
return 0;
}
不知道哪出问题了,能帮忙找找错吗?