| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9399 人关注过本帖, 2 人收藏
标题:百钱百鸡——求一重循环解决问题的解法
只看楼主 加入收藏
蓝色药剂
Rank: 4
等 级:业余侠客
帖 子:43
专家分:204
注 册:2007-11-24
结帖率:100%
收藏(2)
已结贴  问题点数:20 回复次数:19 
百钱百鸡——求一重循环解决问题的解法
如题,百钱百鸡的问题描述:100钱怎么样买100只鸡,公鸡单价5钱,母鸡单价3钱,小鸡三只1钱;求只用一个循环解出这个问题。
搜索更多相关主题的帖子: 解法 
2009-10-26 15:33
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:15 
这跟我之前写的一个循环从大到小排序类似,一个循环也可以。
程序代码:
#include <stdio.h>
int main(void)
{
 int i=0,j=1,k,m=5,g=3,x=1,s=100;
 while(1)
   {
    k=(s-i-j)/3;
    if(i*m+j*g+k*x==s&&i+j+k*3==s)
      printf("%d %d %d\n",i,j,k*3);
    if(i>=(s-g-x)/m)break;
    if(j>=(s-m-x)/g)i++,j=1;
    j++;
   }
 return 0;
}


[ 本帖最后由 UserYuH 于 2009-10-26 17:07 编辑 ]

努力—前进—变老—退休—入土
2009-10-26 16:38
zhjr5201314
Rank: 4
等 级:业余侠客
帖 子:63
专家分:238
注 册:2009-9-10
收藏
得分:5 
#include<stdio.h>
void main()
{
    int a,b,c;
  for(a=0;a<20;a++)
  {
    if(3*a==0||(3*a)%4==0)
        {
            b=25-7*a/4;
            c=75+3*a/4;
            if(b>=0&&c>=0)
            printf("a=%d b=%d c=%d\n",a,b,c);
        }
  }
}
2009-10-26 16:49
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
楼上直接拿结果的规律来算。

努力—前进—变老—退休—入土
2009-10-26 17:20
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 2楼 UserYuH
1层被你写了,我写嵌套的
/*如题,百钱百鸡的问题描述:100钱怎么样买100只鸡,公鸡单价5钱,
母鸡单价3钱,小鸡三只1钱;*/
main()
{
    float g,m,x;
    for(g=0;g<20;g++)
        for(m=0;m<33;m++)
            for(x=0;x<300;x++)
        {    if((g+m+x)==100.0)
                if(5*g+3*m+x*1/3==100.0)
                printf("g=%f,m=%f,x=%f\n",g,m,x);
        }
    getch();
}

我可好玩啦...不信你玩玩^_^
2009-10-26 18:39
ljt0000mf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:157
注 册:2009-7-4
收藏
得分:0 
UserYuH哥哥啊,能解释下您的算法不,看不太明白
2009-10-26 18:46
蓝色药剂
Rank: 4
等 级:业余侠客
帖 子:43
专家分:204
注 册:2007-11-24
收藏
得分:0 
受教,给分,结贴
2009-10-26 19:05
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 2楼 UserYuH
以后写code要说算法,起码有解释(要不然有人找我解释)
#include <stdio.h>
int main(void)
{
int i=0,j=1,k,m=5,g=3,x=1,s=100;
while(1)
   {
    k=(s-i-j)/3;  /*小鸡的个数,这个地方有点意思,呵呵*/
    if(i*m+j*g+k*x==s&&i+j+k*3==s)  /*当价格正好是100且鸡个数正好是100时候执行下面的循环体*/
      printf("%d %d %d\n",i,j,k*3);   
    if(i>=(s-g-x)/m)break; /*当公鸡个数超出理论值,break*/
    if(j>=(s-m-x)/g)i++,j=1;/*母鸡*/
    j++;
   }
return 0;
}
/*
ps:user是想用g代表公鸡,m代表母鸡吧,不过定义变量的时候用混淆了*/

我可好玩啦...不信你玩玩^_^
2009-10-26 19:11
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 2楼 UserYuH
有点问题,为什么母鸡不从0开始数,却从j=1数

我可好玩啦...不信你玩玩^_^
2009-10-26 19:17
蓝色药剂
Rank: 4
等 级:业余侠客
帖 子:43
专家分:204
注 册:2007-11-24
收藏
得分:0 
回复 9楼 pgy
其实我也有这个疑问,不过试了从0开始的,结果也是一样
2009-10-26 19:24
快速回复:百钱百鸡——求一重循环解决问题的解法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028559 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved