1307: 搬箱子
题目描述
搬运公司要将一堆纸皮箱子从XXX公司的楼低搬到楼上,但是搬箱子的人手有限,一个人同时只能拿一个箱子。但Sec想到了一个办法,让他们把小箱子装到大箱子里面,即体积小箱子能装到体积大的箱子中(体积相同不能互装),这样就能节省很多人手。例:有三个箱子体积分别是1,2,3,这样就可以把体积1的箱子装到体积2的箱子中,再让体积2的箱子装到体积3的箱子中,这样只用一个人就能把体积3的箱子搬上去,就可以把所有箱子搬上去了。
现在给出n个箱子和每个箱子的体积,问至少要多少个人才能把所有箱子搬上去?
输入
输入包含多组测试样例,以判断输入到达文件尾(EOF)终止程序。
每个测试样例第一行输入一个整数n ( 0 < n <= 10^3 ),接下来第二行包含n个整数xi (0< xi <= 10^3)
输出
对于每个输入样例,立刻输出他对应的答案。输出占一行,只包含一个整数m,即搬箱子需要的最少人数。
样例输入
5
1 2 3 1 2
6
1 4 5 6 2 3
5
1 1 1 1 1
样例输出
2
1
5
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void out(){
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int n = in.nextInt();
int num[] = new int[n];
for (int i = 0; i < n; i++)
num[i] = in.nextInt();
//开始
int temp;
int len = 0,count=0;
while(len < n) {
Arrays.sort(num);
//找到第一个非零元素,并将其赋予temp以及设为0
if (num[len]==0) {
len++;
continue;
}
temp = num[len];
num[len] = 0;
//遍历后面大于第一个非零元素的值,设为0并更新temp
for (int i = len+1; i < num.length; i++) {
if (num[i] > temp) {
temp = num[i];
num[i]=0;
len++;
}
}
//每回合加一
count++;
}
System.out.println(count);
}
}
public static void main(String[] args){
out();
}
}