- 任務與代碼
試題編號: 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開始。
- 繼續努力! 加油!