枚举和模拟

枚举,或者说暴力枚举,听起来好像比较简单,只要把所有可能都列举一遍并从中找出正确答案即可,但是枚举有一个弊端——容易超时,所以必须想办法优化。所以枚举不仅不必其他类别题目简单,优化这一点可能难度还会超过其他题目。
下面是我在OJ提交过的两个题目:
1).火柴棒:
题目描述不在说了;
该题有两个要点:
1.A和B不一定是个位数,可能是两位甚至四位数;
2.所有火柴棒必须用上;
所以我们要利用已给的一位数棒数来算出所有三位数和四位数的棒数;
我们先用数组将已知的十个数(从0至9)的棒数存起来,数组【1】存储‘1’所需的棒数,再以此类推;
那么,比如11,就是两个‘1’所构成,所以数组中存储的‘11’就是两个‘1’的棒数相加。那么‘11’就是一个已知棒数,进而可以求出‘111’,‘1111’等数,再将‘111’,‘11’所需的棒数存储至数组【111】,数组【11】,就求出了所有在给出的棒数中可以摆出来的最大一个数和小于其的数,且需要使用数字m的棒数时直接调用数组【m】即可;
又因为‘+’,‘=’各需两个火柴棒,所以我们实际可用的棒数只有n-2-2个(n指给出的棒数),所以只要两重循环将所有加数(设第一个加数为x,第二个为y)都循环出来,所以两加数所需的棒数为数组【x】+数组【y】,那么和就是数组【x+y】,又因为我们其实可用的只有n-4个棒数,所以只要数组【x】+数组【y】+数组【x+y】等于n-4&#

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值