CCF——数列分段

来源:互联网 发布:淘宝网怎么没有一淘了 编辑:程序博客网 时间:2024/05/16 12:00

问题描述

 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?

输入格式

 输入的第一行包含一个整数n,表示数列中整数的个数。 第二行包含n个整数a1,a2,a3......an,表示给定的数列,相邻的整数之间用一个空格分隔。

输出格式

 输出一个整数,表示给定的数列有多少个段

样例输入

88 8 8 0 12 12 8 0

样例输出

5

解题思路

 可以先将数存放在数组中,再一次遍历,两两进行比较,如果不同那么就是一段,所以代码很快就可以写出了。

Code

#include <iostream>using namespace std;#define MAXSIZE 1005int a[MAXSIZE];int main(){    int n;    while (cin >> n)    {        int count = 0;        for (int i = 0; i < n; i++)        {            cin >> a[i];        }        for (int j = 0; j < n - 1; j++)        {            if (a[j] != a[j + 1])            {                count++;            }        }        count++;        cout << count << endl;    }    return 0;}

或者采用边输入边检测的方法进行判断。

Code

#include<iostream>using namespace std;int main(){    int n, temp, pre, count = 1;    while (cin >> n)    {        cin >> temp;        pre = temp;        for (int i = 1; i < n; i++)        {            cin >> temp;            if (temp != pre)            {                count++;            }            pre = temp;        }        cout << count << endl;    }    return 0;}