书中说到枚举的上界是1111,这估计是作者的一个近似值。
其实可以更好的减少遍历的次数就是。总共20根火柴,A、B、C三个数字,每个数字都不能超过7根火柴。
于是我们找到7根火柴能组成最大的数字是711。所以上界是可以精确到711的。
当然也可以通过程序来找到这个上界。
#include<stdio.h>
int f[10]={6,2,5,5,4,5,6,3,7,6} ; //用来存储每一个
int fun(int k) { //用来计算传进来数所需的总火柴数
int num=0;
while(k)
{
num+=f[k%10];
k/=10;
}
num+=f[x];
return num;
}
int main(){
int max=0,c;
for(int i = 0;i<2000;i++) { //随便设置一个比较大的数
for(int j = 0;j<2000;j++) {
c=i+j;
if(fun(i)+fun(j)+fun(c)==20) { //当火柴数到了20,并且等式A+B=C成立
if(j>max) { //用来获取能满足条件的最大值
max=j;
}
}
}
}
printf("%d",max); //得出结论711。
return 0;