- 任务与代码
试题编号: 201509-1
试题名称: 数列分段
时间限制: 1.0s
内存限制: 256.0MB
问题描述: 问题描述
给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?
输入格式
输入的第一行包含一个整数n,表示数列中整数的个数。
第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。
输出格式
输出一个整数,表示给定的数列有多个段。
样例输入
8
8 8 8 0 12 12 8 0
样例输出
5
样例说明
8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。
评测用例规模与约定
1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000。
满分代码:
/*
*文件名称:ccf2.java
*作者:陈happy
*完成日期:2019.12.11
*
*问题描述: 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段。
*程序输入: 输入的第一行包含一个整数n,表示数列中整数的个数。
第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。
*程序输出: 输出一个整数,表示给定的数列有多个段。
*/
import java.util.*;
public class ccf5 {
public static void main(String []args)
{
int n;
int count=1;
Scanner reader = new Scanner(System.in);
n=reader.nextInt();
int []b=new int[1000];
for(int i=0;i<n;i++) {
b[i]=reader.nextInt();
}
for(int i=0;i<n-1;i++) {
if(b[i]==b[i+1]) continue;
else count=count+1;
}
System.out.print(count);
}
}
运行结果:
- 心得:
- 刚开始count设置的初值为0,输入实例给出的8个数,出来的分段结果总是少了1个,本来以为是因为最后一个是0,而数组的长度总是为1000,没有填数的位置都是0,如果循环是到n-1,最后总是与0比较,所以将循环改成到n-2停止;后来发现弄巧成拙,这解决的是最后一个数不为0时与更后面一个0比较时count多加了一个1的问题,实际上总是从第一个数往后比较,后面的数与前面一个数不同就会加1,第一个数一直没有被考虑;count应该从1开始。
- 继续努力! 加油!