2017 ccpc 秦皇岛C Crusaders Quest

https://vjudge.net/contest/203034#problem/C





给出一行9个字符,分别是3个g,3个a,3个o,每次操作可以去掉其中的一种字符,并把剩余的字符再连起来,如果去掉的3个字符是连在一起的即算作一次得分,问最多能得多少分。
模拟即可,因为结果只有1,2,3 3种情况,模拟去掉的字符种类即可。




#include<bits/stdc++.h>
using namespace std;	char a[22];
int find(char e)
{
	char aa[22];
	strcpy(aa,a);
			for(int i=0;i<9;i++)
			{
				if(aa[i]==e)
				{
				   aa[i]='*';
				}
			}
			int js=0;
			char b='s';
			bool f2=0;
		    int ans=0;
			for(int i=0;i<9;i++)
			{
				if(aa[i]=='*')continue;
				if(b=='s')
				b=aa[i];
				if(aa[i]==b)
				js++;
				else {
					b=aa[i];
					js=1;
				}
				if(js==3)
				{
					return 2;
					f2=1;
					break;
				}
			}
			if(f2==0)
			{
				return 1;
			}
}
int main(){

	int t;
	cin>>t;
	while(t--)
	{
	   int s=0;
	   bool flag=0;
	   cin>>a;
	   for(int i=0;i<strlen(a)-2;i++)
	   {
	   	if(a[i]==a[i+1]&&a[i+1]==a[i+2])
	   	{
	   		for(int j=i;j+3<=8;j++)
	   		a[j]=a[j+3];
	   		flag=1;
	   		break;
	   }
	   }
	   if(flag)
	   {
	   	bool flag1=0;
	   	for(int q=0;q<4;q++)
	   		{
	   			if(a[q]==a[q+1]&&a[q+1]==a[q+2])
	   			{
	   				cout<<"3"<<endl;
	   				flag1=1;
	   				break;
				   }
			   }
			   if(flag1==0)
			   cout<<"2"<<endl;
		}
		else {
			int ans=find('a');
			ans=max(find('g'),ans);
			 ans=max(find('o'),ans);
			 cout<<ans<<endl;
		}
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值