勤劳的算法:穷举法

 

      穷举算法,有些人也叫做列举算法、枚举算法,是一种在没有找到问题解决规律或公式时,将可能的情况,根据已有的条件进行一一测试,将符合条件的列为所求的解。

      枚举算法是一种最简单的,可以说是没有算法的算法,他借助于计算机快速的运算速度,大的内存空间,使得这种算法得以长命百岁。

     优点如下:

           准确性高;答案全面。

      缺点如下:

            费时长;占用空间大。

      穷举法适合,求解是有限的集合,求解条件不够直接计算得到答案,但又已知一些条件的情况下使用。在很多经典问题时均用到,比如穷举法计算最小公倍数,判断一个数是否是质数还是合数等,它也算是一种常用的,永葆青春的算法。当然穷举算法经常被用来攻破密码方法之一。

      下面列举一些经典例子,均是用穷举法来完成的。

       这些例子,有精力的同学,大家来写程序吧!

      例1:鸡兔同笼36,共计100足,问鸡兔各几何?

      例2:您有朋友给你一元钱,叫你给他换一些零钱,给出你有多少种换法?

      例3:一个12位数字密码和一个6位数字、大小写英文字母,还有上档键字母(键盘橫排数字键上面符号,如@,*等)密码,哪个容易被破密?

     例4:在近期电视节目“最强大脑”世界大赛中,中国雨人周玮在二分多种时间里用心算判断2个4位数是否是质数,请你输入2个四位数,判断是否是质数要经过多少次除法运算?

     例5:小斌有一个QQ帐号密码是一个5位数。但因长时间没使用了,他将密码给忘了。但小斌生日是8月1日出生,而爸爸的生日则是9月1日,小斌记得是把同时是8l和9l的倍数用作密码,还记得这个密码的中间一位(百位数)是l。你能设计一个程序帮他找回这个密码吗?