纪念品分组

随便写写

import java.util.Arrays;
import java.util.Scanner;
 
public class 纪念品分组 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int w,n;
        w=scanner.nextInt();
        n=scanner.nextInt();
        int[] pi=new int[n];
        for (int i = 0; i < n ; i++) {
            pi[i]=scanner.nextInt();
        }
        Arrays.sort(pi);//按照价格排序
        int p=0,q=n-1,count=0;
        while(p<q){
            //如果p指向的纪念品价值+q指向的纪念品<=w纪念品价格之和的上限 分为一组 装完 pq移动
            if(pi[p]+pi[q]<=w){
                count++;
                p++;
                q--;
            }
            //如果p指向的纪念品价值+q指向的纪念品>w的话 对q进行单独分组 q指向当前大的那个纪念品的价值 q往前移动
            else{
                count++;
                q--;
            }
        }
        if(p==q) count++;  //说明还未分完组 还有纪念品未进行分组 单独对该纪念品分为一组
        System.out.print(count);
    }
}
 
posted @ 2021-07-25 23:08  guoyuxin3  阅读(105)  评论(0)    收藏  举报