天天看點

CCP-CSP認證考試 201509-1 數列分段 c/c++題解

題目描述

試題編号: 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。

代碼:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <deque>
#include <list>
#include <utility>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <bitset>
#include <iterator>
using namespace std;

typedef long long ll;
const int inf = 0x3f3f3f3f;
const ll  INF = 0x3f3f3f3f3f3f3f3f;
const double PI = acos(-1.0);
const double E = exp(1.0);
const int MOD = 1e9+7;
const int MAX = 1e3+5;
int n,a;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    while(cin >> n)
    {
        int sum = 0;
        int last = -1;
        for(int i = 0; i < n; i++)
        {
            cin >> a;
            if(a != last)
            {
                sum++;
            }
            last = a;
        }
        cout << sum << endl;
    }

    return 0;
}