数列分段算法:计算整数序列中连续相同子序列段数
数列分段算法:计算整数序列中连续相同子序列段数
问题描述
给定一个整数序列,我们希望将连续相同的最长整数序列算作一段,并计算该序列中共有多少段。
输入格式
- 第一行包含一个整数 n,表示序列中整数的个数。* 第二行包含 n 个整数 a1, a2, ..., an,表示给定的序列,相邻的整数之间用一个空格分隔。
输出格式
- 输出一个整数,表示给定的序列中共有多少段。
样例输入
88 8 8 0 12 12 8 0
样例输出
5
样例说明
8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。
评测用例规模与约定
- 1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000。
C语言代码实现c#include <stdio.h>
int main() { int n; scanf('%d', &n);
int sequence[n]; for (int i = 0; i < n; i++) { scanf('%d', &sequence[i]); }
int count = 1; // 初始化计数为1,因为至少有一段 for (int i = 1; i < n; i++) { if (sequence[i] != sequence[i-1]) { count++; } }
printf('%d
', count);
return 0;}
输入示例解释
n = 8,表示序列中有8个整数。*sequence = [8, 8, 8, 0, 12, 12, 8, 0],表示给定的序列。
输出示例解释
- 序列中有5段,分别是:
[8, 8, 8]、[0]、[12, 12]、[8]、[0]。
原文地址: https://www.cveoy.top/t/topic/bfk4 著作权归作者所有。请勿转载和采集!