枚举,或者说暴力枚举,听起来好像比较简单,只要把所有可能都列举一遍并从中找出正确答案即可,但是枚举有一个弊端——容易超时,所以必须想办法优化。所以枚举不仅不必其他类别题目简单,优化这一点可能难度还会超过其他题目。
下面是我在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&#
枚举和模拟
最新推荐文章于 2023-04-06 15:03:35 发布