| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8544 人关注过本帖, 3 人收藏
标题:称量1-100g的重量,最少需要几种砝码?求高手编写c程序
只看楼主 加入收藏
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
收藏
得分:1 
过来仔细参考,暂时还没看懂

贵在坚持!
2012-07-05 23:06
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
昨天一直在车上。

杨大哥和小曹确实很牛。

下面我说下我的想法:

假如现在只有一个1g的砝码,那么我们只能称1g的重量,我们把能称的重量集合记为S, 现在的S1 = {1}。

现在给了我另外一个砝码m(m!=1)克。那我们能称的重量为1, m-1, m , m+1, 若m-1!=1,那么我们就能称4个重量,S2 = {1, m-1, m, m+1},比如说给的m=3,那么我们能称的重量为S2 = {1,2,3,4},很显然,在某个时刻,只能取S中的一个值,若取了1和3相当于取4。即S2 = {S1, m-S1, m, m+S1}.

现在我们有了1g,3g的砝码,那么再给我一个砝码m,我能称的重量最多能有多少个呢?肯定是1,2,3,4,m-4,m-3,m-2,m-1,m,m+1,m+2,m+3,m+4,若m=9,则连续称的重量为S3= {1,2,3,4,5,6,7,8,9,10,11,12,13}。即S3 = {S2,m-S2, m, m+S2}。

不难看出,这里有个规律: 假设手头上有m个砝码,可以称的连续重量为n个,那么再给一个砝码,此砝码重量为2n+1,那么能称的连续重量为3n+1个,即已经能称的1到n的重量,加上新加的砝码2n+1依次减去1到n的重量得到的n+1到2n的n个重量,再加上新加的砝码本身的重量2n+1,再加上2n+1依次加上1到n的重量得到的2n+2到3n+1的n个重量。此时砝码个数为m+1。

m个砝码能称的最多重量为(3^m-1)/2。第m个砝码的重量为3^(m-1)。

程序也很好写。

再次膜拜杨大哥和小曹。


[ 本帖最后由 demonleer 于 2012-7-6 10:09 编辑 ]
2012-07-06 09:49
黑崎一心
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:158
注 册:2012-4-17
收藏
得分:1 
B版的分析最精彩的部分是第三个问题。4个版主C语言能力谁高谁低不好说,但算法分析能力应该是B版最强
2012-07-07 08:38
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
感谢楼上的认可。

尺有所短,寸有所长。谁高谁低这样的对比不过满足一时的虚荣心而已,我更希望有能力的人能聚起来做出点更实际更有价值的东西。

我希望看到一个有实力的团结的论坛。

重剑无锋,大巧不工
2012-07-07 10:41
limengyangde
Rank: 1
等 级:新手上路
帖 子:8
专家分:7
注 册:2012-3-9
收藏
得分:0 
要是用数学来解决,应该假设为N进制,前n项和为(1-Nⁿ)/(1-N)≥100,个数为(N-1)*n,求最优解就行了…

[ 本帖最后由 limengyangde 于 2012-7-9 02:02 编辑 ]
2012-07-08 22:47
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
收藏
得分:1 
楼上的解释下5个砝码是那几个?
2012-07-08 23:16
欧星爱学习
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2012-7-8
收藏
得分:1 
这个理解题意很重要,具体代码如下,很简单的哈。
#include<stdio.h>

int main()
{
    int i;
    int k=0;
    printf("所需要的砝码为:");
    for(i=1;i<100;i=i*2)
        {
            printf("%d ",i);
            k++;
        }
        printf("\n");
        printf("所需要的砝码是%d个\n",k);
}
2012-07-08 23:52
欧星爱学习
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2012-7-8
收藏
得分:0 
你们如果在理解题意的基础上,对上个代码表示怀疑的话,可以去亲手尝试一下,是不是可以用这7个砝码对1~100之间的所有重量都可以进行称重。
2012-07-08 23:55
欧星爱学习
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2012-7-8
收藏
得分:0 
回复 14楼 beyondyf
同学,你把这个问题想的太复杂了,其实很简单的,我在后面写了一段代码,你可以去看看,希望提出你的意见。
2012-07-08 23:57
欧星爱学习
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2012-7-8
收藏
得分:0 
回复 4楼 demonleer
你的理解是正确的,满分!只有理解正确了,程序很简单的,当初我对于这个问题就是想的太复杂了,导致弄了很多程序出来。后来才正解了。
2012-07-09 00:02
快速回复:称量1-100g的重量,最少需要几种砝码?求高手编写c程序
数据加载中...
 
   



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

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