暴力枚举学习
火柴棍游戏
题目大意
给定确定的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,"种"); }
|