| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3393 人关注过本帖
标题:一人选一个方法,解决个小孩搬砖的问题。
只看楼主 加入收藏
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
一人选一个方法,解决个小孩搬砖的问题。
题目是这样的:
有100个人,由大人、妇女、小孩组成,有100块砖,大人一个人搬三块砖,妇女一个人搬一块砖,小孩两个人搬一块砖,请问有多少个大人,有多少个妇女,有多少个小孩。
我感觉这个题可以用好多方法,比如if语句,for语句等等,(当然我才学这么多)都各自发表下自己的代码吧,分数不是很多,纯属兴趣。
搜索更多相关主题的帖子: 一个人 
2011-09-14 17:25
statics
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:163
专家分:625
注 册:2011-8-29
收藏
得分:0 
占个位子

惟我独行...
2011-09-14 17:36
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:4 
程序代码:
#include <stdio.h>
int main(void)
{
    int i,j,k;
    int x,y,z;
    for(x = 0;x<=33;x++)
    {
        for(y = 0;y<=100;y++)
        {
            z = 100-x-y;
            if(0 == z%2 && 100 == 3*x+y+(z>>1))
                printf("男人:%d 妇女:%d 小孩:%d\n",x,y,z);
        }
    }
    return 0;
}
最笨的方法

                                         
===========深入<----------------->浅出============
2011-09-14 17:38
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:5 
程序代码:
#include <stdio.h>
int main(void)
{
    int i,j,k;
    int x,y,z;   
    for(i = 0;i<=20;i++)
    {
        x = i;
        y = 100-5*i;
        z = 100-x-y;
        printf("男人:%d 妇女:%d 小孩:%d\n",x,y,z);
    }
    return 0;
}
其实观察输出结果就可以看到少买5个女人就可以买1个男人和4个小孩  所以从一开始100个女人

开始  每次递减5个  那么男人就加一 小孩就加4

                                         
===========深入<----------------->浅出============
2011-09-14 17:48
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
回复 2楼 xugaige
不是作业贴,刚刚想起来的一个小题目,研究下解题的方法。
2011-09-14 18:10
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:2 
设大人有x个,妇女有y个,小孩有z个。则
x + y + z = 100
3x + y + z/2 = 100
解得
y = 100 - 5x
z = 4x
如果允许某个量为0, 则x的取值范围是0-20
如果不允许为0, 则x的取值范围是1-19
对于每一个x代入上述解直接求得相应的y, z。

重剑无锋,大巧不工
2011-09-14 18:14
a5952036
Rank: 2
等 级:论坛游民
帖 子:65
专家分:94
注 册:2011-9-7
收藏
得分:0 
看不懂
2011-09-14 19:23
如果可能的话
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2011-9-10
收藏
得分:2 
#include<stdio.h>
main()
{
    int i,j,k;
    i=j=k=0;
    for(i=0;i<100;i++)
    {
        for(j=0;j<100;j++)
        {
            if((k=100-i-j)>0)
            {if(3*i+j+k/2.0==100)
                goto find;
            }
        }
    }
find:   
    printf("大人:%d,妇女:%d,小孩%d",i,j,k);
}
2011-09-14 20:22
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:4 
回复 楼主 小赵q1
仅供参考:有100个人,由大人、妇女、小孩组成,有100块砖
#include<stdio.h>
int main()
{
int i,j,k,a;
int a=100;
for(i=1;i<=(a-1-1)/3;i++)
for(j=1;j<=(a-3-1);j++)
for(k=2;k<=(a-3-1);k+=k)
if(((3*i)+j+k==a)&&(i+j+(k*2)==a))
printf("%d,%d,%d",i,j,2*k);
return 0;
}

[ 本帖最后由 A13433758072 于 2011-9-14 22:30 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-14 20:28
快速回复:一人选一个方法,解决个小孩搬砖的问题。
数据加载中...
 
   



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

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