C语言求助 20分

P1478 陶陶摘苹果(升级版)

落昀c @ 2020-02-28 00:16:02

如果不排序的话按照实例输出结果是正确的为4,如果排序的话,输出结果就是3了 想知道为什么

#include<stdio.h>
int main()
{
    int n, s, a, b, i, j, p, q;
    int x[5010], y[5010];
    int ans = 0;

    scanf("%d %d", &n, &s);
    scanf("%d %d", &a, &b);
    for(i = 0; i < n; i++)
    {
        scanf("%d %d", x + i, y + i);
    }

/*  for(i = 0; i < n - 1; i++)
    {
        for(j = i + 1; j < n; j++)
        {
            if(x[i] > x[j])
            {
                p = x[i];
                x[i] = x[j];
                x[j] = p;
                q = y[i];
                y[i] = y[j];
                y[j] = q;
            }
        }
    }
*/  
    for(i = 0; i < n; i++)
    {
        if(a + b >= x[i] && s >= y[i])
        {
            ans++;
            s -= y[i];
        }
    }
    printf("%d", ans);
    return 0;
}

by waltz26 @ 2020-02-28 00:32:18

排序错了,应该排序花费的力气。


by 落昀c @ 2020-02-28 00:41:46

@waltz26 为什么呢???


by 落昀c @ 2020-02-28 00:44:19

@waltz26 高度 为什么不可以呢?


by waltz26 @ 2020-02-28 00:50:38

你想想,如果用高度的话,假如数据是这样的:

假设高度都适合,力气只有8的话。


by 落昀c @ 2020-02-28 08:56:41

@waltz26 ooooo 明白了明白了 谢谢^_^这么晚了还帮解题


|