序列的段数
问题描述
有一个序列,这个序列长度为 n (n ≤ 1000),也就是一共有 n 个数(ai ≤ 1000),求这个序列有几段? 段的定义是位置连续的数值相同的最长整数序列
|
输入第一行一个整数 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; }
|