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;
}