【暴力】排队的奶牛
排隊的奶牛
題目大意:
有一個序列,要你刪去序列中的一類相同的數(shù),然后求最長的相同數(shù)字段的長度
原題:
題目描述
農(nóng)夫約翰的N只奶牛排成了一條直線,每只奶牛都有一個特定的標(biāo)識序號,從左到右第i只奶牛的編號是Bi。
約翰認(rèn)為他的奶牛隊列中存在某段連續(xù)區(qū)間都是相同序號的,那他的隊列就非常的美觀。為了創(chuàng)造這樣的一個連續(xù)區(qū)間,約翰決定將某個特定的序號的奶牛全部剔除隊列。
問題描述:
請幫助約翰計算出通過選擇除去某個特定序號的全部奶牛后,所剩下的隊列中連續(xù)的有相同序號的奶牛的最大區(qū)間。
輸入
第一行一個正整數(shù)N,表示奶牛的數(shù)量。
第2行到第N+1行,每行一個非負(fù)整數(shù),表示從左到右每只奶牛的序號。
輸出
只有一行一個整數(shù),表示連續(xù)的有相同序號的奶牛的最大區(qū)間中奶牛的數(shù)量。
輸入樣例
9
2
7
3
7
7
3
7
5
7
輸出樣例
4
說明
數(shù)據(jù)范圍:1<=N<=1000,奶牛序號的范圍是0到1000000。
說明:通過除去所有序號為3的奶牛,我們就得到了2777757這樣一個序列,那么最長的連續(xù)的有相同序號的區(qū)間長度就是4。
解題思路:
把出現(xiàn)的數(shù)字記錄下來,然后for循環(huán)一遍,然后再求最長的相同數(shù)字段的長度就行了
代碼:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int n,w,sum,ans,last,a[1005],b[1005],p[1000005]; int main() {scanf("%d",&n);for (int i=1;i<=n;++i){scanf("%d",&a[i]);if (!p[a[i]]){p[a[i]]=1;b[++w]=a[i];//記錄}}ans=1;for (int i=1;i<=w;++i)//枚舉去掉的數(shù)字{last=0;//清零sum=0;for (int j=1;j<=n;++j)if (a[j]==b[i]) continue;//已經(jīng)去掉了else a[j]==last?(ans=max(ans,++sum)):(last=a[j],sum=1);//求最長數(shù)字段}printf("%d",ans); }總結(jié)
- 上一篇: 离弦之箭的意思是什么 离弦之箭读音及解释
- 下一篇: 【DP】景观美化