【java】CCF刷题——201509-1数列分段

  • 任务与代码

试题编号: 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);
	}		
}

运行结果:
在这里插入图片描述

  • 心得:
  1. 刚开始count设置的初值为0,输入实例给出的8个数,出来的分段结果总是少了1个,本来以为是因为最后一个是0,而数组的长度总是为1000,没有填数的位置都是0,如果循环是到n-1,最后总是与0比较,所以将循环改成到n-2停止;后来发现弄巧成拙,这解决的是最后一个数不为0时与更后面一个0比较时count多加了一个1的问题,实际上总是从第一个数往后比较,后面的数与前面一个数不同就会加1,第一个数一直没有被考虑;count应该从1开始。
  2. 继续努力! 加油!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章