一、题目描述
疫情过后,希望小学终于又重新开学了,三年二班开学第一天的任务是将后面的黑板报重新制作。
黑板上已经写上了N个正整数,同学们需要给这每个数分别上一种颜色。
为了让黑板报既美观又有学习意义,老师要求同种颜色的所有数都可以被这种颜色中最小的那个数整除。
现在请你帮帮小朋友们,算算最少需要多少种颜色才能给这N个数进行上色。
二、输入描述
第一行有一个正整数N,其中。
第二行有N个int型数(保证输入数据在[1,100]范围中),表示黑板上各个正整数的值。
7
58 14 20 67 41 4 63
三、输出描述
输出只有一个整数,为最少需要的颜色种数。
6
因为7个数中只有20能被4整除,所以20和4一个颜色,其它的都是不同颜色。
四、Java算法源码
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int maxLen = Integer.parseInt(scanner.nextLine());
String[] orgStrArr = scanner.nextLine().split("\\s");
List<Integer> list = new ArrayList<>();
for (String str : orgStrArr) {
if (list.size() <= maxLen) {
list.add(Integer.parseInt(str));
}
}
Collections.sort(list);
Iterator<Integer> iterator;
int first;
while (list.size() > 0) {
iterator = list.iterator();
first = iterator.next();
iterator.remove();
while (iterator.hasNext()) {
if (iterator.next() % first == 0) {
iterator.remove();
}
}
minType++;
}
System.out.println(minType);
}
五、效果展示
🏆本文收录于,华为OD机试2023(Java)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。