一、题目描述
疫情过后,希望小学终于又重新开学了,三年二班开学第一天的任务是将后面的黑板报重新制作。
黑板上已经写上了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机考。专栏会持续更新,每天在线答疑。