csp模拟3rd_A -瑞神的序列

本文介绍了一种用于划分连续相同整数序列的算法,通过双指针技巧实现,能够高效计算出序列可以被划分为多少个连续相同的子序列部分。代码采用C++实现,展示了尺取思想的应用。

A -瑞神的序列


题目描述

在这里插入图片描述
在这里插入图片描述

题目思路

题目的意思是让我们找出输入中按连续相同的整数划分为段的话能划分为几段。这里我们只需要使用两个“指针”就可以实现,类似于尺取的思想。即令l,r都从序列头开始,然后如果l和r位置的数相同的话就将l右移,如果不同的话就更新r=l并将技术cnt加一,循环即可。

代码实现

#include
#include
using namespace std;
#define _for(i,a,b) for(int i = (a); i < (b); i++)
#define _rep(i,a,b) for(int i = (a); i <= (b); i++)

const int MAXN = 1010;

int n,a[MAXN];
int l,r,cnt;

int main(){
l = 0,r = 0,cnt = 1;
cin >> n;
_for(i,0,n){
cin >> a[i];
}
while(r < n && l < n){
if(a[l] == a[r]){
l++;
}
else {
r = l;
cnt++;
}
}

cout << cnt << endl;

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值