题目链接: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<n;i++)arr[i]=scan.nextInt();int ans=n;//最大的结果是每个房子都重新刷了一遍for (int i=1;i<=60;i++){//遍历每个颜色,最后选出最少天数int res=0;//记录刷每一种颜色的所需要的天数for (int j=0;j<n;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