| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1424 人关注过本帖
标题:OJ最大贡献问题
取消只看楼主 加入收藏
rainnese
Rank: 1
来 自:广州
等 级:新手上路
帖 子:51
专家分:0
注 册:2016-1-15
结帖率:56.25%
收藏
已结贴  问题点数:6 回复次数:2 
OJ最大贡献问题
题目:
Description
蒙多最近运气太好了- -,对面怒送一血,抢大龙,小龙,然后各种五杀(蒙多都能五杀,运气不能更好),瞬间超神,小小的钱袋里一下子有好多钱,好开心~,但是他在纠结该买些什么装备才能对团队贡献大,所以他跑来请教你。as we know ,在游戏里我们最多同时拥有6件装备,所以蒙多不能购买超过6件装备。现在有N种不同的装备供蒙多选择,蒙多手上有M单位的钱,每种装备最多只能买一个,每件装备有不同的价格Ai,对团队的贡献度为Bi,请帮助蒙多购买装备使得他对团队贡献值总和最大。



Input
输入包括多组数据,以文件(EOF)结束。
第一行两个整数N(1<=N<=100),M(1<=M<=1000)。
接下来N行,每行两个整数Ai(1<=Ai<=100),Bi(1<=Bi<=1000)。



Output
每组数据一个整数,表示最大贡献度。



Sample Input
Original Transformed

1 5
6 2
3 5
3 3
5 4
4 1

1[SP]5[EOL] 6[SP]2[EOL] 3[SP]5[EOL] 3[SP]3[EOL] 5[SP]4[EOL] 4[SP]1[EOL] [EOL] [EOF]

Sample Output
Original Transformed

0
4

我的代码是:
程序代码:
#include<stdio.h>
int main()
{
    int num, mon, choice[100][2];
    while (scanf("%d", &num) == 1 && num != EOF)
    {
        int sum = 0;
        char ch = getchar();
        scanf("%d", &mon);
        ch = getchar();
        for (int i = 0;i < num;i++)
            scanf("%d%d", &choice[i][0], &choice[i][1]);
        for (int i = 0,t,p;i < num-1;i++)
        {
            for (int j = 0;j < num-1-i;j++)
            {
                if (choice[j][0]>choice[j+1][0])
                {
                    t = choice[j][0];
                    p = choice[j][1];
                    choice[j][1] = choice[j+1][1];
                    choice[j][0]=choice[j+1][0];
                    choice[j+1][0] = t;
                    choice[j+1][1] = p;
                }
            }
        }
        for (int i,all,max,j=0,k;j < num;j++)
        {
            all = max=k=0;
            i = j;
            while (i<num&&k<6)
            {
                all += choice[i][0];
                if (all > mon)break;
                max += choice[i][1];
                k++;
                i++;
            }
            if (sum < max)sum = max;
        }
        printf("%d\n", sum);
    }
    return 0;
}

是错误答案,为什么?结果都是对的,我做过其他数据测试,也没有问题
搜索更多相关主题的帖子: 购买装备 游戏 
2016-03-06 17:29
rainnese
Rank: 1
来 自:广州
等 级:新手上路
帖 子:51
专家分:0
注 册:2016-1-15
收藏
得分:0 
回复 2楼 qq1023569223
然后出现runtime error,怎么回事?

计算机专业的大学生
2016-03-06 18:11
rainnese
Rank: 1
来 自:广州
等 级:新手上路
帖 子:51
专家分:0
注 册:2016-1-15
收藏
得分:0 
回复 3楼 wmf2014
我改成这样,做很多测试都没有问题,还是错,求解
程序代码:
#include<stdio.h>
int main()
{
    int num, mon, choice[100][2];
    while (scanf("%d%d", &num,&mon) == 2 && num != EOF&&mon!=EOF)
    {
        int sum = 0;
        char ch = getchar();
        for (int i = 0;i < num;i++)
            scanf("%d%d", &choice[i][0], &choice[i][1]);
        for (int i = 0,t,p;i < num-1;i++)
        {
            for (int j = 0;j < num-1-i;j++)
            {
                if (choice[j][1]<choice[j+1][1])
                {
                    t = choice[j][0];
                    p = choice[j][1];
                    choice[j][1] = choice[j+1][1];
                    choice[j][0]=choice[j+1][0];
                    choice[j+1][0] = t;
                    choice[j+1][1] = p;
                }
            }
        }
        for (int i,all,max,j=0,k;j < num;j++)
        {
            all = max=k=0;
            i = j;
            while (i<num&&k<6)
            {
                all += choice[i][0];
                if (all > mon)break;
                max += choice[i][1];
                k++;
                i++;
            }
            if (sum < max)sum = max;
        }
        printf("%d\n", sum);
    }
    return 0;
}

计算机专业的大学生
2016-03-08 17:42
快速回复:OJ最大贡献问题
数据加载中...
 
   



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

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