【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. 繼續努力! 加油!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章