题目:一根绳上有100个小球,两两相连,每种球有颜色(红橙黄绿蓝靛紫),求出相同颜色最大相连的小球个数,颜色和第一个球的下标
初步思路:1.定义一个数组(红橙黄绿蓝靛紫)
2.随机生成100个颜色
用Java实现
运行结果如下:
代码如下:
public static void main(String[] args) {
int[] a = new int[100];
for(int i = 0;i<100;i++)
{
a[i] = (int) (Math.random()*6);//生成0-6的随机数,表示颜色
System.out.print(a[i]+" ");
if((i+1)%10==0)
System.out.println();
}
int maxlen = 0,index = 0;
int cnt = 1;
for(int i=1;i<100;i++){
if(a[i] == a[i-1]){
cnt++;
}else{
if(cnt > maxlen){
index = i-cnt;
maxlen = cnt;
}
cnt = 1;
}
}
if(cnt > maxlen){
index = 100 - cnt -1;
maxlen = cnt;
}
System.out.println("maxlen="+maxlen +" ,index = "+index);
} //main end
public class Main {
public static void main(String[] args) {
Main main = new Main();
Random r = new Random();
int[] arr = new int[100];
for(int i = 0; i < 100; i++){
arr[i] = r.nextInt(7);//0-6代表七种颜色
}
System.out.println(Arrays.toString(arr));//输出生成的数组
System.out.println(main.getMaxConnect(arr));//输出结果
}
private int getMaxConnect(int[] arr){
int ans = 1;
int prev = arr[0];
int cnt = 0;
for(int i = 0; i < arr.length; i++){
cnt = arr[i]==prev?cnt+1:1;
prev = arr[i];
ans = Math.max(cnt,ans);
}
return ans;
}
}