题目链接:http://codeforces.com/contest/219/problem/C
借鉴代码:
#include <cstdio>
#include <algorithm>
using namespace std;
int a,b,c,d;
char base[500010];
int k,n;
int main()
{
scanf("%d%d",&n,&k);
scanf("%s",base+1);
if (k==2)
{
int an=0,bn=0;
for (a=1; a<=n; a++)
if ((base[a]=='A' && a%2==1) || (base[a]=='B' && a%2==0) ) an++; else bn++;
if (an>=bn)
{
printf("%d\n",bn);
for (a=1; a<=n; a++) if (a%2==1) base[a]='A'; else base[a]='B';
printf("%s",base+1);
}
else
{
printf("%d\n",an);
for (a=1; a<=n; a++) if (a%2==1) base[a]='B'; else base[a]='A';
printf("%s",base+1);
}
return 0;
}
int cnt=0;
for (a=2; a<=n; a++)
if (base[a]==base[a-1])
{
cnt++;
if (base[a-1]!='C' && base[a+1]!='C') base[a]='C';
if (base[a-1]!='B' && base[a+1]!='B') base[a]='B';
if (base[a-1]!='A' && base[a+1]!='A') base[a]='A';
}
printf("%d\n",cnt);
printf("%s",base+1);
}