经典贪心乘船问题
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);
}
}
}
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);
}
}
}