守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 2604|回复: 0
打印 上一主题 下一主题

[技术资料] 编程算法之枚举法

[复制链接]
  • TA的每日心情
    慵懒
    2015-4-16 10:25
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    18

    主题

    19

    帖子

    1284

    积分

    版主

    Rank: 16Rank: 16Rank: 16Rank: 16

    威望
    11
    贡献
    0
    金币
    359
    钢镚
    20
    跳转到指定楼层
    楼主
    发表于 2015-4-11 22:45:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 yaoyuan0701 于 2015-4-11 22:46 编辑

    枚举法是编程里常用的算法之一,依赖于计算机的强大计算能力来穷尽没一种可能的情况,从而达到解决问题的目的,改算法效率并不高,但适用于一些没有明显规律可循的环境。

    在小学奥数中经常会看到一些填数字的游戏,如下图

        算法描述题
    *                算
    --------------——
    题题题题题题

    从上图可看出,共有5个汉字(算,法,描,述,题),每个汉字代表0-9中的一个数,接着就用数字代表汉字,验证计算的结果是否和列出的算式相等,若相等 则找出一个正确的答案;

    分析:此问题完全符合枚举算法的要求,因为数字没有规律可循0-9任何一个数字都行。
    1. // 算法之枚举法.cpp : 定义控制台应用程序的入口点。
    2. //

    3. #include "stdafx.h"


    4. int _tmain(int argc, _TCHAR* argv[])
    5. {
    6.         int i1,i2,i3,i4,i5;
    7.         long multi,result;

    8.         for (i1=0;i1<=9;++i1)
    9.         {
    10.                 for (i2=0;i2<=9;++i2)
    11.                 {
    12.                         for (i3=0;i3<=9;++i3)
    13.                         {
    14.                                 for (i4=0;i4<=9;++i4)
    15.                                 {
    16.                                         for (i5=1;i5<=9;++i5)
    17.                                         {
    18.                                                 
    19.                                                 multi = 10000*i1+1000*i2+100*i3+10*i4+i5;
    20.                                                 result= 100000*i5+10000*i5+1000*i5+100*i5+10*i5+i5;
    21.                                                 if (multi*i1 == result)
    22.                                                 {
    23.                                                         printf("%d%d%d%d%d\n",i1,i2,i3,i4,i5);
    24.                                                 }
    25.                                         }
    26.                                 }
    27.                         }
    28.                 }
    29.         }
    30.         return 0;
    31. }

    复制代码
    算,法,描,述,题 分别代表的是i1,i2,i3,i4,i5;
    multi = 算法描述题
    result = 题题题题题题
    注意题是i5,i5是不能等于0,以后初始化遍历是1.
    是不是很简答呢?

    http://blog.csdn.net/yaoyuan0701/article/details/44999965

    评分

    参与人数 1威望 +1 收起 理由
    破晓 + 1

    查看全部评分

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
    收藏收藏 分享分享 支持支持 反对反对 微信
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2024-4-19 13:50 , Processed in 0.050800 second(s), 33 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表