坑爹的奥数——枚举

一、问题引入小明在数学课上遇到一道奥数题是这样的,【】3*6528=3【】*8256,在两个【】内填入相同的数字使得等式成立。不用分析了,直接show代码: for(int i=1;i<=9;i++) if((i*10+3)*6528==(30+i)*8256) printf("%d",i); //答案为4 ...
摘要由CSDN通过智能技术生成

一、问题引入

小明在数学课上遇到一道奥数题是这样的,【】3*6528=3【】*8256,在两个【】内填入相同的数字使得等式成立。

不用分析了,直接show代码:

    for(int i=1;i<=9;i++)
        if((i*10+3)*6528==(30+i)*8256)
            printf("%d",i);  //答案为4 

 

这就是最简单的枚举算法。

枚举算法的基本思想是:有序地去尝试每一种可能。

 

二、问题拓展

现在小明又遇到一个稍微复杂一点的奥数题,【】【】【】+【】【】【】=【】【】【】,将数字1~9分别填入9个【】中,每个数字智能使用一次使得等式成立。

分析:根据枚举思想我们只需要枚举每一位上所有可能的数就好了。

    int a,b,c,d,e,f,g,h,i,total=0;
    for(a=1;a<=9;a++)  //第1个数的百位
        for(b=1;b<=9;b++)  //第1个数的十位
            for(c=1;c<=9;c++)  //第1个数的个位
                for(d=1;d<=9;d++)  //第2个数的百位
                    for(e=1;e<=9;e++)  //第2个数的十位
                        for(f=1;f<=9;f++)  //第2个数的个位
                            for(g=1;g<=9;g++)  //第3个数的百位
                                for(h=1;h<=9;h++)  //第3个数的十位
                       
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值