本文主要是介绍枚举法——火柴棒等式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给你 n 根火柴棍,你可以拼出多少个形如 "A+B=C" 的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。
用火柴棍拼数字 0-9 的拼法如图所示
注意:
-
加号与等号各自需要两根火柴棍
-
如果 ,则与是不同的等式(A,B,C≥0)
-
n根火柴棍必须全部用上
输入格式
输入一个整数n
输出格式
输出能拼成的不同等式的数目
输入样例
5
输出样例
0
n最大为24,则数字可用的火柴数最多为20个。最多可组成10个1,而10个1要组成三个数,所以每个数最大不超过1111(可以取数试一下,所需火柴数会超过24)。
#include<iostream>
using namespace std;
int shu(int n)//计算每个数字所需要的火柴数
{int a[10]={6,2,5,5,4,5,6,3,7,6};//数组存每个数字所需的火柴数,下标对应数字int s=0;while(n/10)//为真,则n至少为两位数{s+=a[n%10];//对火柴数累加n=n/10;}s+=a[n];//最后一位return s;
}
int main()
{int n,t=0;cin>>n;int C;for(int i=0;i<=1111;i++){for(int j=0;j<=1111;j++){C=i+j;if(shu(i)+shu(j)+shu(C)==n-4)//判断火柴棒数目{t++;}}}cout<<t;
}
这篇关于枚举法——火柴棒等式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!