您的位置:首页 > 其它

HDU 5210

2016-07-07 16:43 246 查看
Description

WLD likes playing with numbers. One day he is playing with N integers. He wants to delete K integers from them. He likes diversity, so he wants to keep the kinds of different integers as many as possible after the deletion. But he is busy pushing, can you help him?

Input

There are Multiple Cases. (At MOST 100)

For each case:

The first line contains one integer N(0<N≤100).

The second line contains N integers a1,a2,...,aN(1≤ai≤N), denoting the integers WLD plays with.

The third line contains one integer K(0≤K<N).

Output

For each case:

Print one integer. It denotes the maximum of different numbers remain after the deletion.

Sample Input

4

1 3 1 2

1

Sample Output

3

Hint

if WLD deletes a 3, the numbers remain is [1,1,2],he’ll get 2 different numbers. if WLD deletes a 2, the numbers remain is [1,1,3],he’ll get 2 different numbers. if WLD deletes a 1, the numbers remain is [1,2,3],he’ll get 3 different numbers.

题意:输出一个n 然后输入一个 长度为n的数组,然后输入一个k ,如果k大于这个数组里面数字重复的数字就输出

System.out.println(n -num- (k - num));//num是数组不同数字的数字

反之直接输出这个数组的不同数字的个数

思路: 贪心 水题

import java.util.Scanner;

public class Main{
private static int n = 0, k = 0, num = 0;
private static int[] array;
private static int[] resArray;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
num = 0;
n = scanner.nextInt();
array = new int
;
resArray = new int
;
for (int i = 0; i < n; i++) {
int temp = scanner.nextInt();
if (judge(temp)) {
array[i] = temp;
} else {
resArray[i] = temp;
num++;
}
}
k = scanner.nextInt();
if (k <= num) {
System.out.println(n - num);
} else {
System.out.println(n -num- (k - num));
}

}
scanner.close();
}

private static boolean judge(int x) {
for (int i = 0; i < array.length; i++) {
if (array[i] == x) {
return false;
}
}
return true;
}

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