TZC OJ 2673:最优装载 [贪心算法]

其实贪心法很简单,之所以说是贪心便是从人的心理来说明的。我们总是希望最好的方法来解决问题,这是一个局部概念,忽略了总体考虑。

贪心法是一种解决问题的策略。如果策略正确,那么贪心法往往是易于描述、易于实现的。下面的这个小例子很简单,但它也从本质上来说明书了贪心算法。

CODE:

#include <stdio.h>
#define Max 2013

int main()
{
    int n, c, w[Max];
    while (scanf("%d%d", &n, &c)!=EOF)
    {
        int i;
        for (i = 0; i < n; ++i)
        {
            scanf("%d", &w[i]);
        }

        int j;
        for (i = 0; i < n; ++i) // sort
        {
            for (j = i + 1; j < n; ++j)
            {
                if (w[i] > w[j])
                {
                    w[i] = w[i] + w[j];
                    w[j] = w[i] - w[j];
                    w[i] = w[i] - w[j];
                } // if
            } // for
        } // for

        int sum, ct;
        for (i = 0, sum = 0, ct = 0; i < n; ++i)
        {
            sum += w[i];
            ++ct;
            if (sum > c)
            {
                --ct;
                break;
            }
        }

        printf("%d\n", ct);
    } // while
    return 0;
}

 

你可能感兴趣的:(贪心算法)