0%

序列的段数

序列的段数

问题描述

有一个序列,这个序列长度为 n (n ≤ 1000),也就是一共有 n 个数(ai ≤ 1000),求这个序列有几段?
段的定义是位置连续的数值相同的最长整数序列

Input

输入第一行一个整数 n,表示数的个数
接下来一行 n 个空格隔开的整数,表示不同的数字

Output

输出一行,这个序列有多少段

Sample

Input: 
12
2 3 3 6 6 6 1 1 4 5 1 4

Output:
8

Explain:
序列可分为[2][3 3][6 6 6][1 1][4][5][1][4] 共八段

Limitation

Time limit      1000 ms
Memory limit 262144 kb

解题思路

从头到尾扫一遍,若 A[i] != A[i-1],则段数+1。

源代码

#include <iostream>
using namespace std;

const int maxN = 2000;
int arr[maxN];

int solve(int n) {
int count = 1;
for (int i = 1; i < n; i++) {
if (arr[i - 1] != arr[i])
count++;
}
return count;
}

int main() {
int n;
while (!(cin >> n).eof()) {
for (int i = 0; i < n; i++)
cin >> arr[i];
int res = solve(n);
cout << res << endl;
}
return 0;
}