您的位置:首页 > 编程语言 > Java开发

经典贪心乘船问题

2014-04-17 20:19 411 查看
package com.supermars.practice;

import java.io.BufferedInputStream;

import java.util.Arrays;

import java.util.Scanner;

public class 贪心法乘船问题 {

    static Scanner cin = new Scanner(new BufferedInputStream(System.in));

    static int A[] = new int[1 << 7];

    static int vis[] = new int[1 << 7];

    static int C;

    public static void main(String[] args) {

        while (cin.hasNext()) {

            int n = cin.nextInt();

            for (int i = 0; i < n; i++) {

                A[i] = cin.nextInt();

            }

            C = cin.nextInt();

            Arrays.sort(A, 0, n);

            int i = 0, j = n - 1;

            int cnt = 0;

            while (true) {

                if (i == j) {

                    cnt++;

                    break;

                }

                int t = A[i] + A[j];

                if (t <= C && vis[j] == 0) {

                    // vis[i]=1;

                    vis[j] = 1;

                    cnt++;

                    i++;

                    j = n - 1;

                } else {

                    j--;

                }

            }

            System.out.println(cnt);

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM 算法 java