- 积分
- 1284
- 注册时间
- 2014-12-29
- 最后登录
- 2016-11-14
- 在线时间
- 17 小时
- 威望
- 11
- 贡献
- 0
- 金币
- 359
- 钢镚
- 20
- 交易凭证
- 0
- 分享
- 0
- 精华
- 0
- 帖子
- 19
- 主题
- 18
TA的每日心情 | 慵懒 2015-4-16 10:25 |
|---|
签到天数: 8 天 [LV.3]偶尔看看II
版主
   
- 威望
- 11
- 贡献
- 0
- 金币
- 359
- 钢镚
- 20
|
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步。
此算法可以运用于生活各个领域里面,生生处处有算法啊。 附上此游戏的源码
- // 算法之二分法.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- int price = 0;
- int guessPrice = 0;
- printf("请输入商品的价格");
- scanf_s("%d",&price);
- system("cls");
- while (price!=guessPrice)
- {
- printf("请输入试猜的价格:\n");
- scanf_s("%d",&guessPrice);
- if(price>guessPrice)
- {
- printf("猜低了\n");
- }
- else if(price<guessPrice)
- {
- printf("猜高了\n");
- }
- else
- {
- printf("猜对了\n");
- }
- }
- system("pause");
- return 0;
- }
复制代码
|
评分
-
查看全部评分
|