题目描述
瑞神的数学一向是最好的,连强大的咕咕东都要拜倒在瑞神的数学水平之下,虽然咕咕东很苦
恼,但是咕咕东拿瑞神一点办法都没有。
5.1期间大家都出去玩了,只有瑞神还在孜孜不倦的学习,瑞神想到了一个序列,这个序列长度为
n,也就是一共有 n个数,瑞神给自己出了一个问题:数列有几段?
段的定义是连续的相同的最长整数序列
输入描述
输入第一行一个整数n,表示数的个数
接下来一行n个空格隔开的整数,表示不同的数字
输出描述
输出一行,这个序列有多少段
样例输入
12
2 3 3 6 6 6 1 1 4 5 1 4
样例输出
8
数据组成
数据点 | n | ai |
---|---|---|
所有数据 | <=1000 | <=1000 |
解题思路
由于段的定义是连续的相同的最长整数序列,我们只要按顺序判断当前的数和上一个数是否相同,如果不相同,就说明当前要判断的数处于一个新的分段中,分段计数加1,最后输出总的分段数。特别地,在程序初始时,我们把上一个数设为在输入数据中不会出现的数,如100000。
程序源码
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int L[1005];
for(int i=0;i<n;i++){ //获取输入
scanf("%d",&L[i]);
}
int current=100000; //上一个数
int total=0;
for(int i=0;i<n;i++){
if(current!=L[i]){ //当前的数和上一个数不一样
current=L[i];
total++; //分段+1
}
}
printf("%d",total); //输出总分段数
return 0;
}