broken necklace

#include<fstream>
#include<iostream>
#include<malloc.h>
#define  null NULL
using namespace std;
typedef struct list
{
	char value;
	struct list * prior;
    struct list * next;
}list;
int main()
{
	ifstream fin ("beads.in");
	ofstream fout ("beads.out");
	int n,i;
	list * p;
	list * head;
	fin>>n;
	for(i=0;i<n;i++)
	{
		if(i==0)
		{
			head=(list *)(malloc(sizeof(list)));
	        head->next=null;
	        head->prior=null;
	        fin>>head->value;
			p=head;
		}
		else
		{
		    list * q=(list *)(malloc(sizeof(list)));
		    fin>>q->value;
		    p->next=q;
			q->prior=p;
			p=q;
		}
	}
	p->next=head;
	head->prior=p;
	list *q=head;
	list *t=head->next;
	int sum=0,sum1=0,sum2=0,sumtemp=0;
	for(i=0;i<n;i++)
	{
		list * qt=q;
		list * tt=t;
		sum1=1;
		sum2=1;
		if(qt->value=='r' ||  qt->value=='b')
			while((qt->prior->value==q->value || qt->prior->value=='w')&&(qt->prior!=tt))
			{
				qt=qt->prior;
				sum1++;
			}
		else if(qt->value=='w')
		{
			int sumr=0,sumb=0;
			while((qt->prior->value=='r' || qt->prior->value=='w')&&(qt->prior!=tt))
			{
				sumr++;
				qt=qt->prior;
			}
			list *qt1=q;
			while((qt1->prior->value=='b' || qt1->prior->value=='w')&&(qt1->prior!=tt))
			{
				sumb++;
				qt1=qt1->prior;
			}
			if(sumr>=sumb)
				sum1+=sumr;
			else
			{
				sum1+=sumb;
				qt=qt1;
			}
		}
		if(tt->value=='r' || tt->value=='b')
		{
			while((tt->next->value==t->value || tt->next->value=='w')&&(qt!=tt->next))
			{
				tt=tt->next;
				sum2++;
			}
		}
		else if(tt->value=='w')
		{
			int sumr=0,sumb=0;
			while((tt->next->value=='r' || tt->next->value=='w')&&(qt!=tt->next))
			{
				sumr++;
				tt=tt->next;
			}
			list * tt1=tt;
			while((tt1->next->value=='b' || tt1->next->value=='w')&&(qt!=tt1->next))
			{
				sumb++;
				tt1=tt1->next;
			}
			if(sumr>=sumb)
				sum2+=sumr;
			else
			{
				sum2+=sumb;
				tt=tt1;
			}
		}
		sumtemp=sum1+sum2;
		if(sumtemp>sum)
			sum=sumtemp;
		sum1=0;
		sum2=0;
		q=q->next;
		t=t->next;
	}
	fout<<sum<<endl;
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章