纪念品分组(贪心)
本题使用贪心,先排序,再逐个检查一一封装统计
#include <stdio.h>
void sort(int* a, int l);
int main()
{
	int sz[30000] = { 0 };
	int w, n, i, p, q, o,sum;
	scanf("%d", &w);
	scanf("%d", &n);
	for (i = 0; i < n; i++)
	{
		scanf("%d", &sz[i]);
	}
    sort( sz, n);
    for (p = 0, q = n - 1, o = 0; p < q;)
    {
        if (sz[q] + sz[p] <= w)
        {
            q--;
            p++;
            o++;
        }
        else
        {
            q--;
        }
    }
    sum = 0;
    sum = n - o;
    printf("%d", sum);
}
void sort(int* a, int l)
{
    int i, j;
    int v;
    for (i = 0; i < l - 1; i++)
        for (j = i + 1; j < l; j++)
        {
            if (a[i] > a[j])
            {
                v = a[i];
                a[i] = a[j];
                a[j] = v;
            }
        }
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号