问题 4119 --两元序列(完善程序)

4119: 两元序列(完善程序)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 28  解决: 7
[提交][状态][命题人:]

题目描述

#include <iostream>
using namespace std;
int main()
{
	const int SIZE = 100;
	int n, i, j, a[SIZE], cur1, cur2, count1, count2, ans_length, ans_start, ans_end;
	//cur1, cur2 分别表示当前子序列中的两个不同整数
	//count1, count2 分别表示 cur1, cur2 在当前子序列中出现的次数
	cin>>n;
	for (i = 1; i <= n; i++)
	cin>>a[i];
	i = 1;
	j = 1;
	//i, j 分别表示当前子序列的首尾,并保证其中至多有两个不同整数
	while ((j <= n) && (a[j] == a[i]))
	j++;
	cur1 = a[i];
	cur2 = a[j];
	count1 = ____(1)______//(3 分)
	count2 = 1;
    ans_length = j - i + 1;
	while (j < n) 
	{
		j++;
		if (a[j] == cur1)
			count1++;
		else if (a[j] == cur2)
			count2++;
		else 
		{
			if (a[j - 1] ==____(2)_____)//(3 分)
			{	
				while (count2 > 0) 
				{
					if (a[i] == cur1)
					count1--;
					else
					count2--;
					i++;
				}
				cur2 = a[j];
				count2 = 1;
			}
			else 
			{
				while (count1 > 0) 
				{
					if (a[i] == cur1)
					_____(3)______;	//(2 分)
					else
					______(4)______//(2 分)
					i++;
				}
				______(5)______//(3 分)
				count1 = 1;
			}
		}
		if (ans_length < j - i + 1) 
		{ 
			ans_length = j - i + 1; 
			ans_start = i;
			ans_end = j;
		}
	}
	for (i = ans_start; i <= ans_end; i++)
	cout<<a[i]<<' ';
	return 0;
}


输入

输出

提示

来源

[提交][状态]