普及练习场 贪心 纪念品分组

来源:互联网 发布:win7 centos双系统 编辑:程序博客网 时间:2024/05/17 05:06

题目链接

题意理解

将纪念品按照价格排序,从左到右是由低到高的顺序。然后根据价格低的进行匹配,从右往左找价格最高的可以与价格低的组成一组的纪念品。

代码

import java.util.Arrays;import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int w = scanner.nextInt();        int n = scanner.nextInt();        int[] p = new int[n];        for(int i = 0; i < n; i++) {            p[i] = scanner.nextInt();        }        scanner.close();        Arrays.sort(p);        int left = 0;        int right = n - 1;        int missNum = 0;        int groupNum = 0;        while(left < right) {            while(p[left] + p[right] > w) {                right--;                missNum++;            }            if(left != right) {                groupNum++;                left++;                right--;            }            if(left == right) {                missNum++;            }        }        System.out.println(groupNum + missNum);    }}
原创粉丝点击