1181.c

来自「平时acm训练时ac的源代码」· C语言 代码 · 共 75 行

C
75
字号
#include <stdio.h>

char Ch[1001];
int Sh[1001]={0},n,V,Count=0,dig[3][1001]={0};

Readata()
{
	int i;
	scanf("%d",&n);
	for(i=0;i<=n;i++)
		scanf("%c",&Ch[i]);
}

Findnext()
{
	int Sat,i,S1,S2,S3,Te1,Te2,V1=1,V2=1,V3=1;
	S1=0;S2=0;S3=0;
	for(i=1;i<=V;i++)
	{
		if(Ch[i]=='G') S1++;
		if(Ch[i]=='B') S2++;
		if(Ch[i]=='R') S3++;
	}
	for(i=1;i<=V;i++)
	{
		Sat=1;
		Te1=(i+1)%V;
		Te2=(i+2)%V;
		if(Te1==0) Te1=V;
		if(Te2==0) Te2=V;
		if((Ch[i]!=Ch[Te1])&&(Ch[i]!=Ch[Te2])&&(Ch[Te1]!=Ch[Te2]))
		{
			if((Ch[Te1]=='G')&&(S1=1)) Sat=0;
			if((Ch[Te1]=='B')&&(S2=1)) Sat=0;
			if((Ch[Te1]=='R')&&(S3=1)) Sat=0;
			if(Sat)
			{
				V1=i;
				V2=Te1;
				V3=Te2;
			}
		}
	}
	Count++;
	dig[1][Count]=Sh[V1];
	dig[2][Count]=Sh[V3];
	for(i=V2+1;i<=V;i++)
	{
		Sh[i-1]=Sh[i];
		Ch[i-1]=Ch[i];
	}
	V--;
}

Writedata()
{
	int i;
	printf("%d\n",n-3);
	for(i=1;i<=Count;i++)
		printf("%d %d\n",dig[1][i],dig[2][i]);
}

main()
{
	int i;
	Readata();
	for(i=1;i<=n;i++)
		Sh[i]=i;
	V=n;
	for(i=1;i<=n-3;i++)
		Findnext();
	Writedata();
	getch();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?