首页 > 代码库 > 火柴棍等式问题
火柴棍等式问题
火柴棍等式问题
首先确定每个数字所用的火柴棍树木,用一层递归一层循环枚举一次,确定两个加数的值,算出和,进行进行判断,若符合条件则进行记录。
1 #include<cstdio> 2 int need[]={6,2,5,5,4,5,6,3,7,6}; 3 int ans=0;int h=0; 4 int n; 5 int ab[1000]; 6 int cnt(int cur){ 7 int ans=0,ret; 8 if(cur==0) return 6; 9 while(cur>0){10 ret=cur%10;11 ans+= need[ret];12 cur/=10;13 }14 return ans;15 }16 void huo(int i)17 {18 int t;19 if(i>1000){printf("%d\n",ans);20 for(t=0;t<h;t+=3)21 printf("%d+%d=%d\n",ab[t],ab[t+1],ab[t+2]);22 }23 else {for(t=0;t<=1000;t++)24 {int a=cnt(i); int b=cnt(t);25 int d=cnt(i+t);26 int c=n-4-a-b;27 if(d==c){28 ans++;29 ab[h]=i;30 ab[h+1]=t;31 ab[h+2]=i+t;32 h=h+3;33 }34 35 }36 37 huo(i+1);38 }39 }40 int main()41 {42 43 scanf("%d",&n);44 huo(0);45 return 0;46 }
火柴棍等式问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。