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

被折叠的 条评论
为什么被折叠?



