1.1 Broken Necklace

       分析一下题目,首先可知分开的位置肯定是在两个不同的相邻字母之间,可以使用for语句求出每一个可以分开的位置处的可被收集的珠子数目,保存最大的那个数目,最后输出即可。

 

/*
ID: whutzha1  
PROG: beads  
LANG: C++  
*/
#include<fstream>
using namespace std;
ifstream cin("beads.in");
ofstream cout("beads.out");
int main()
{
  char arr[350];
  int  n,i,j;
  cin>>n;
  cin>>arr;
  int num,num1,num2,max=0;
  bool flag=true;
  for (i=0;i<n;i++)
  {
	  num1=1;num2=1;
	  if (arr[i%n]!=arr[(i+1)%n])  
	  {
		 flag=false;
		 char a1=arr[i];
		 char a2=arr[i+1];
		 j=i-1;
		 if (a1!='w')
		 while(arr[(j+n)%n]==a1||arr[(j+n)%n]=='w') 
		 {
		   num1++;j--;
		 }
		 else 
		 while(arr[(j+n)%n]=='w'||arr[(j+n)%n]!=a2)
		 {
		   num1++;j--;
		 }
		 j=i+2;
		 if (a2!='w')
		 while(arr[(j+n)%n]==a2||arr[(j+n)%n]=='w')
		 {
		   num2++;j++;
		 }
		 else 
		 while (arr[(j+n)%n]==a2||arr[(j+n)%n]!=a1)
		 {
		    num2++;j++;
		 }
		 num=num1+num2;
		 if (max<num&&num<=n)  max=num;
	  }
  }
  if (flag)  max=n;
  cout<<max<<endl;
  return 0;
}

转载于:https://my.oschina.net/u/585691/blog/71775

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值