网站开发常用图标 图像,天坛网站建设,wordpress 悬浮栏,有园林案例的网站排队的奶牛
题目大意#xff1a;
有一个序列#xff0c;要你删去序列中的一类相同的数#xff0c;然后求最长的相同数字段的长度
原题#xff1a;
题目描述
农夫约翰的N只奶牛排成了一条直线#xff0c;每只奶牛都有一个特定的标识序号#xff0c;从左到右第i只奶牛…排队的奶牛
题目大意
有一个序列要你删去序列中的一类相同的数然后求最长的相同数字段的长度
原题
题目描述
农夫约翰的N只奶牛排成了一条直线每只奶牛都有一个特定的标识序号从左到右第i只奶牛的编号是Bi。 约翰认为他的奶牛队列中存在某段连续区间都是相同序号的那他的队列就非常的美观。为了创造这样的一个连续区间约翰决定将某个特定的序号的奶牛全部剔除队列。
问题描述
请帮助约翰计算出通过选择除去某个特定序号的全部奶牛后所剩下的队列中连续的有相同序号的奶牛的最大区间。
输入
第一行一个正整数N表示奶牛的数量。 第2行到第N1行每行一个非负整数表示从左到右每只奶牛的序号。
输出
只有一行一个整数表示连续的有相同序号的奶牛的最大区间中奶牛的数量。
输入样例
9 2 7 3 7 7 3 7 5 7
输出样例
4
说明
数据范围1N1000奶牛序号的范围是0到1000000。 说明通过除去所有序号为3的奶牛我们就得到了2777757这样一个序列那么最长的连续的有相同序号的区间长度就是4。
解题思路
把出现的数字记录下来然后for循环一遍然后再求最长的相同数字段的长度就行了
代码
#includecstdio
#includecstring
#includeiostream
using namespace std;
int n,w,sum,ans,last,a[1005],b[1005],p[1000005];
int main()
{scanf(%d,n);for (int i1;in;i){scanf(%d,a[i]);if (!p[a[i]]){p[a[i]]1;b[w]a[i];//记录}}ans1;for (int i1;iw;i)//枚举去掉的数字{last0;//清零sum0;for (int j1;jn;j)if (a[j]b[i]) continue;//已经去掉了else a[j]last?(ansmax(ans,sum)):(lasta[j],sum1);//求最长数字段}printf(%d,ans);
}