题目描述
杰克把 N (3 <= N <= 80) 粒蓝色和橙色的珠子连成了一串,问有多少对珠子(相邻的)是不同颜色的。
输入描述
第一行,一个整数 N ;
第二行, N 个数字( 0 或 1 ),其中 0 表示橙色, 1 表示蓝色。
输出描述
输出相邻两粒珠是不同颜色的对数。
用例输入 1 :
6
1 0 0 1 1 1
用例输出 1 :
2
提示
注意边界问题,也就是第一个和最后一个珠子。
来源
数组问题
好了,开始解题。
首先先打好输入的代码:
int n;
int a[81];
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
然后分析题目:
它说了是相邻的两个数据,例如1,0,1,1和0相邻,且是不同颜色的珠子,所以我们可以定义一个专门计数的变量sum,初始值为0,每次遇到不同颜色的珠子时,sum就加1。(代码如下)
int sum=0;
for(int i=1;i<=n-1;i++){
if(a[i]!=a[i+1]){
sum++;
}
}
if(a[1]!=a[n]){
sum+=1;
}
在for循环里判断一下相邻的珠子是否为不同颜色。
最后输出sum。(代码如下)
cout<<sum;
完整代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
int a[81];
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int sum=0;
for(int i=1;i<=n-1;i++){
if(a[i]!=a[i+1]){
sum++;
}
}
if(a[1]!=a[n]){
sum+=1;
}
cout<<sum;
return 0;
}
一定一定要注意边界问题,要在for循环外面加上珠子首尾判断。
if(a[1]!=a[n]){
sum+=1;
}
这样就通过了:
可惜过程痛苦!!!: