标题:c语言,贪心算法
只看楼主
a6213820
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-11-3
结帖率:0
已结贴  问题点数:20 回复次数:4 
c语言,贪心算法
2. 独木舟上的旅行:请写一个程序,读入独木舟的最大承载量、旅客的数目和每位旅客的重量。根据给出的规则,计算要安置所以旅客所必须的最少的独木舟条数。
规则:1。独木舟只能坐2人
      2.乘客总重量不能超过独木舟的最大承载量

自己输入最大承载量和旅客数。
搜索更多相关主题的帖子: 贪心 算法 c语言 
2009-11-03 15:32
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
得分:5 
有难度
2009-11-03 15:50
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
得分:5 
m456帮人家写啊,我也想看看结果呢

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2009-11-04 15:57
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
得分:5 
程序代码:
/* 考虑体重实际情况 */
#include <stdio.h>
#define N 10
void sort ( float a[], int n)
{
    int i, j;
    float temp;
    for ( i = 0; i < n -1; i ++)
    for ( j = 0; j < n - i -1; j++)
          if ( a[j] > a[j + 1] )
            temp = a[j], a[j] = a[j + 1], a[j + 1] =temp;
         }
main ()
{
    float a[N], zz;
    int i, j, count = 0;
    printf ("Please input weights:");
    for ( i = 0; i < N; i ++)
    scanf ("%f",&a[i]); 
    sort ( a, N); 
    printf ("Input max weight:");
    scanf("%f",&zz);
    for ( i = 0, j = N -1; i <= j; )/* 将最小体重与最大匹配,判断其是否符合条件,否则将最小与次大比较 */
        if ( a[i] + a[j] <= zz)
        {++ count; ++ i; -- j;}
        else
        {++ count; -- j;}
    printf ("Need: %d\t",count);
    getch ();
    return 0;    
    }


[ 本帖最后由 longlong89 于 2009-11-5 21:11 编辑 ]

想象力征服世界
2009-11-04 22:56
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
得分:5 
假设船承载量是100KG,有20个乘客
    第一个乘客是45KG,那么依次搜索后面的19个乘客的重量,依次相加,计算哪个最接近100KG
后面以此类推(ps:思路,这样算可能计算量大)

我可好玩啦...不信你玩玩^_^
2009-11-04 23:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-290885-1-1.html




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

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