暴力枚举学习

火柴棍游戏

题目大意

 给定确定的n(n<=24)根火柴,要求全部使用并摆出A+B=C的等式,其中A,B,C均为整数,求问共有多少种摆法。

解题思路

 将0-9这10个数字所需要的火柴棍个数记录在数组当中,通过暴力枚举来找出其中符合的个数。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cstdio>
int f[10]={6,2,5,5,4,5,6,3,7,6};
int fn(int x)
{
if(x>=1000) return f[(x/1000)]+f[x/100%10]+f[x/10%10]+f[x%10];
else if(x>=100&&x<1000) return f[x/100]+f[x/10%10]+f[x%10];
else if(x>=10&&x<100) return f[x/10]+f[x%10];
else return f[x];
}
int main()
{
int n,abs=0;
scanf("%d",&n);
for(int i=0;i<=1111;i++)
for(int j=0;j<=1111;j++)
if(fn(i)+fn(j)+fn(i+j)==n-4) abs++;
printf("%s%d%s","情况共有",abs,"种");
}