算法学习之百钱买百鸡

   百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,

用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。

~~~~~~~~~

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int i=0,j=0,k=0;
    for (i=1;i<20;i++){
        n=n++;
        for (j=1;j<33;j++){
            n=n++;
            k = 100-i-j;
            if (i*5+j*3+ k/3 == 100 && k%3 == 0){
                printf("the value of cock is:%d\n",i); 
                printf("the value of hen is:%d\n",j); 
                printf("the value of chicken is:%d\n",k); 
                printf("~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
            }
        }
    }
   

 printf("the total of count is:%d\n",n);
system("pause");
return 0;
}

时间复杂度为O(N2),

优化一点如下,记数器从627变为310:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int i=0,j=0,k=0,n=0;
    for (i=1;i<20;i++){
        n=n++;
        for (j=1;j<((100-5*i)/3);j++){
            n=n++;
            k = 100-i-j;
            if (i*5+j*3+ k/3 == 100 && k%3 == 0){
                printf("the value of cock is:%d\n",i); 
                printf("the value of hen is:%d\n",j); 
                printf("the value of chicken is:%d\n",k); 
                printf("~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
            }
        }
    }
   

 printf("the total of count is:%d\n",n);
system("pause");
return 0;
}

如果要成为O(N),则先用方程式多推导,这才是算法的精华。。

先在头脑中过滤,再交给CPU,内存去实施~~

抄其它人的算法如下:

              for (int k = 1; k <= 3; k++)
                 x = 4 * k;
                 y = 25 - 7 * k;
                 z = 75 + 3 * k;

推荐BLOG:

http://www.cnblogs.com/huangxincheng/category/401959.html

http://www.cnblogs.com/vamei/default.html?page=1

时间: 2024-11-17 13:02:59

算法学习之百钱买百鸡的相关文章

百钱买百鸡

原文:百钱买百鸡 问题:"鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一". 说明:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,问如何用100钱买100只鸡? 设公鸡.母鸡.鸡雏分别值x,y,z钱. a.算法一:穷举法 则:   1<= x <=19,   1<= y <=32,   3<= z <=98(步长为3) 穷举法求解: 代码 1 for(int x=1;x<=19;x++) 2 for(int y=1;y<=32;y++) 3

C语言解决百钱买百鸡问题_C 语言

我国古代数学家张丘建在<算经>一书中曾提出过著名的"百钱买百鸡"问题,该问题叙述如下:鸡翁一,值钱五:鸡母一,值钱三:鸡雏三,值钱一:百钱买百鸡,则翁.母.雏各几何? 翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡.母鸡.小鸡各多少只? 题目分析 如果用数学的方法解决百钱买百鸡问题,可将该问题抽象成方程式组.设公鸡x只,母鸡y只,小鸡z只,得到以下方程式组: A:5x+3y+1/3z = 100 B:x+y+z = 100

C++第11周项目2(1)参考——百钱百鸡

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目2:穷举法解决组合问题]先阅读例题,领会穷举法(意为"穷尽式列举",也称枚举)的思想,然后自行选题进行解决,掌握这种程序设计的一般方法. 任务:利用穷举的方法解决下面的问题(选做一道即算完成任务,其他可以抽时间自由安排,多做会使你更聪明.) (1)百钱百鸡问题:中国古代数学家张丘建在他的<算经>中提出了著名的"百钱买百鸡问题"

PHP经典题:百钱百鸡问题(穷举算法)

PHP经典题:百钱百鸡问题(穷举算法)

百思买扩张 家电零售业步入精细化管理时代

在中国扩张不利的百思买终于抓住国美乱局机会,迈出第一步:走出上海 至少目前看起来,百思买并购五星的进程并未像大家预计的那样发展.自2009年2月,美国家电连锁巨头百思买完成对五星电器的全资收购后,人们预料五星会变得更"百思买化"(详情请登录gemag.com.cn<百思买的慢功夫>),但如今看来,却非如此. "我们不是在整合两者,因为他们非常不同."百思买亚洲区总裁唐思杰(Kal Patel)在接受上任后首次专访时,对<环球企业家>说:&qu

百思买披中国式马甲回中国市场 或调整销售模式

百思买全球副总裁.五星电器首席执行长王健日前在南京宣布,今年12月底,百思买(中国)将在上海徐家汇重启门店,重回中国市场.分析师认为,百思买卷土重来后会改变以往的经营模式,不走高端路线. 变身为"中式百思买" 今年2月百思买(中国)宣布关闭中国大陆地区9家门店时表示,关闭门店只是阶段性战略调整,"在不久的将来会选择1-2家店以新的模式重新开张".这为它重回中国市场埋下伏笔. 据坊间流传的消息,除了徐家汇门店之外,位于陆家嘴的正大广场内的原百思买门店也可能重开,不过百

百思买放弃五星电器 传统家电零售商亟待转型

腾讯科技 张曦文 12月6日报道 12月4日,全球家用电器和电子产品零售巨头百思买宣布将旗下五星电器售予浙江地产商佳源集团.至此,百思买在华8年的零售业务正式宣告完结. 江苏五星电器有限公司成立于1998年,2006年5月被百思买以1.8亿美金控股75%,2009年成为百思买旗下全资子公司. 今年6月,<华尔街日报>披露百思买将变卖估值3亿美元的资产退出中国市场,当时五星电器回应将于下半年推出Big Blue旗舰店升级改造计划,在已有3家基础上再增加8个店面,并于2015年实现江浙皖地区每个城

百盛买兰蔻代寄疑调包

百盛买兰蔻 代寄疑调包 消费者:店员提出代寄 百盛:商场无代寄业务 叶先生从百盛太阳宫店购买5900元的化妆品,让女柜员代寄,不料十天后,弟弟收到的却是疑遭调包的包裹.昨天,记者就此进行求证,女柜员称已交由店方处理,而该店投诉部称此事属于个人行为,与店家无关. 北京包裹始发地在河北 受远在银川的弟弟委托,叶先生于9月9日在百盛太阳宫店购买了一套兰蔻化妆品,"包括眼霜.隔离霜.洗面奶等共9种,共花费5900多元."叶先生称,交钱之后,得知他要寄往外地,"该专柜店员杨娜表示他们有

主材辅材玩概念40万元买百强家具名不副实

12-1<消费主张>:名不副实的实木家具 现代人越来越重视环保与健康,买家具的时候也都倾向于选择实木家具,不过,这实木家具也有讲究,同样都是实木,此木和彼木,材质不同,价格会相差很多,北京的王先生买了一套实木家具,不过,这套家具可给他添了堵. 40万买来的是" 假货"? 王先生:黑胡桃木当时商家说是一种比较高档的木材,说是美国进口可以跟红木相媲美,咱们也比较相信大品牌说的话. 王先生说的这个大品牌就是"追求梦想, 对话世界"的百强家具,既然是大品牌,于是