题目链接:1.小蓝的漆房 - 蓝桥云课 (lanqiao.cn)
本题只要是通过枚举的方法,算出涂成每一种颜色所需的天数,最后在所有天数中找出最小值(由题可知,最多只有60种颜色,所以可以尝试算出每种颜色所需的时间)。
代码注释有详细的解释……
程序代码:
- package lanqiao;
-
- import java.util.Scanner;
-
- /**
- * 2023/11/26
- */
- public class lanqiao3272_小蓝的漆房 {
- public static void main(String[] args) {
- Scanner scan=new Scanner(System.in);
- int t=scan.nextInt();//样例个数
- while (t-->0){
- int n=scan.nextInt();//数组的个数
- int k=scan.nextInt();//每天能刷的区间大小
- int[] arr=new int[n];
- for (int i=0;i
- arr[i]=scan.nextInt();
- int ans=n;//最大的结果是每个房子都重新刷了一遍
- for (int i=1;i<=60;i++){//遍历每个颜色,最后选出最少天数
- int res=0;//记录刷每一种颜色的所需要的天数
- for (int j=0;j
//遍历每一个房子,如果区间中有房子的颜色和要刷的颜色不同,就刷成相同的 - if (arr[j]!=i){
- j+=k-1;//是把k长度的区间减去,继续下一天
- res++;
- }
- }
- ans=Math.min(ans,res);//得到每一种颜色所需的天数中的最小值
- }
- System.out.println("小蓝涂漆最少的天数为:"+ans);
- }
- }
- }
运行结果:
- 2
- 5 2
- 1 1 2 2 1
- 小蓝涂漆最少的天数为:1
- 6 2
- 1 2 2 3 3 3
- 小蓝涂漆最少的天数为:2
-
- 进程已结束,退出代码为 0