守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 992|回复: 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-10 23:21:55 | 显示全部楼层 |阅读模式
    http://blog.csdn.net/yaoyuan0701/article/details/44985667


    最近读了一本编程算法的书,里面有些案例很有意思,所以分享给大家,其中会夹杂我自己的想法,希望大家也能学到一些东西!

    我们经常从一些娱乐节目看见有种猜商品价格的游戏,例如:假设有一辆价格为640块钱的自行车要参与者猜价格,提示是该自行车的价格在1000元以下,一般参与者可以会按照以下方式竞猜:


    参与者:900
    主持人:高了
    参与者:850
    主持人:高了
    参与者:800
    主持人:高了参与者:750
    主持人:高了参与者:700
    主持人:高了参与者:650
    主持人:高了参与者:600
    主持人:高了参与者:610
    主持人:低了参与者:620
    主持人:低了参与者:630
    主持人:低了参与者:640
    主持人:恭喜你,答对了。
    该参与者的算法思想是:商品价格在1000以下 自行车价格应该不会太低,因此从900开始猜,依次递减50,当低于价格时再以10递增,直到猜出准确价格。这是一种算法,参与者猜了11次 猜出了实际价格

    但如果答题者是一名程序员的话,那可不会用上面的方法,太low了。
    程序员:500
    主持人:低了
    程序员:750
    主持人:高了
    程序员:620
    主持人:低了
    程序员:680
    主持人:高了
    程序员:650
    主持人:高了
    程序员:630
    主持人:低了
    程序员:640
    主持人:恭喜你 答对了
    程序员用的算法逻辑就是二分法,首先得出中间价500,如果比500高 那么再取500-1000的中间值,依次类推 直到最后的结果,只用了7步。
    此算法可以运用于生活各个领域里面,生生处处有算法啊。 附上此游戏的源码
    1. // 算法之二分法.cpp : 定义控制台应用程序的入口点。
    2. //

    3. #include "stdafx.h"


    4. int _tmain(int argc, _TCHAR* argv[])
    5. {

    6.         int price = 0;
    7.         int guessPrice = 0;

    8.         printf("请输入商品的价格");
    9.         scanf_s("%d",&price);
    10.         system("cls");
    11.         while (price!=guessPrice)
    12.         {
    13.                 printf("请输入试猜的价格:\n");
    14.                 scanf_s("%d",&guessPrice);
    15.                 if(price>guessPrice)
    16.                 {
    17.                         printf("猜低了\n");
    18.                 }
    19.                 else if(price<guessPrice)
    20.                 {
    21.                         printf("猜高了\n");
    22.                 }
    23.                 else
    24.                 {
    25.                         printf("猜对了\n");
    26.                 }
    27.         }
    28.         system("pause");
    29.         return 0;
    30. }

    复制代码



    评分

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

    查看全部评分

    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

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

    本版积分规则

    
    关闭

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

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

    GMT+8, 2017-12-13 23:02 , Processed in 1.281250 second(s), 37 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

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