/**五彩缤纷的卡片**/

/**Description
Tom有许多的卡片有四种颜色分别为Red Green Blue Yellow
随机拿出N张卡片排成一列,为美观,Tom想替换掉相连相同颜色卡片
Input
第一行输入一个整数N,表示n个字符,接着输入”R”, ”G” ,”B”, ”Y”中的一个字符表示第I张卡片的颜色
Output
输出需要替换掉的卡片数
Sample Input 
10
RGGBBBRYYB
Sample Output
3

**/

#include<stdio.h>
void main()
{
char a[100];
int i,j,y=1,N,num=0;
scanf("%d",&N);   //输入N个字符
getchar();        //吃掉缓冲区的回车
for(i=0; i<N; i++)
{
scanf("%c",&a[i]);
}
a[N+1]='\0';     //定义数组以'\0'结尾
for(i=0,j=i+1; i<N; )
{

if(a[i]==a[j])  //循环判断前一个字符与后一个字符是否相等
{
y++;        //如相等记数加一
i++;
j++;
}
else             //否则i=j,从下一位字符开始
{
i=j;
j=j+1;
if(y%2==0)
num+=y/2;   //记需更换的字符
else 
num+=(y-1)/2;
y=1;
}
}
printf("%d",num);

}

猜你喜欢

转载自blog.csdn.net/qq_42497008/article/details/80749311