其他分享
首页 > 其他分享> > 课程总结———暴力(枚举法)

课程总结———暴力(枚举法)

作者:互联网

暴力(枚举法)

先是输入:

    cin>>n;
	cin>>s1;
	s2=s1+s1;//处理环形;

核心代码:

for(int i=0;i<n;i++){//因为是字符串所以要从0开始枚举
	if(sdc==n)//两个特殊情况,这个全是w,输出n;
	{
		sub=n;
		break;
	}
	if(sum==n)//这个是全是r或全是b时,输出n;
	{
		sub=n;
		break;
	}
	if(s2[i]=='w')//如果开头是w时,累加并直接下一个
	{
		sdc++;
		continue;//跳过本次循环
	}
	if(s2[i]!='w')//满足不为w
	{
		sum=0;//计数器清零;
		num=0;//同上
		l=s2[i];//存入第一个不为w的数
		for(int f=i+n-1;f>0;f--)//特殊情况
		{
			if(s2[f]!='w')//当i+n-1的数不为w时再存入k;
			{
				k=s2[f];
				break;
			}
		}
		for(int j=i;j<=i+n-1;j++){//累加过程
			if(s2[j]==l||s2[j]=='w') sum++;
			else break;
		}
		for(int j=i+n-1;j>=sum;j--){//累加过程
			if(s2[j]==k||s2[j]=='w') num++;
			else break;
		}			
   			if(sum+num>sub) sub=sum+num;//打擂台
   		}
	}
	cout<<sub;//输出

-6)总结:
这道题虽然不算太难,但细节较多,比如循环的次数,累加器的清零等;暴力解题,个人认为还是比较实用的,但细节太多,需要谨慎。

标签:暴力,枚举法,s2,sum,枚举,break,珠子,课程,sub
来源: https://blog.csdn.net/qq_55395656/article/details/114452725