排队的奶牛
Description
農夫約翰的N只奶牛排成了一條直線,每只奶牛都有一個特定的標識序號,從左到右第i只奶牛的編號是Bi。
約翰認為他的奶牛隊列中存在某段連續區間都是相同序號的,那他的隊列就非常的美觀。為了創造這樣的一個連續區間,約翰決定將某個特定的序號的奶牛全部剔除隊列。
問題描述:
請幫助約翰計算出通過選擇除去某個特定序號的全部奶牛后,所剩下的隊列中連續的有相同序號的奶牛的最大區間。
Input
第一行一個正整數N,表示奶牛的數量。
第2行到第N+1行,每行一個非負整數,表示從左到右每只奶牛的序號。
Output
只有一行一個整數,表示連續的有相同序號的奶牛的最大區間中奶牛的數量。
Sample Input
9
2
7
3
7
7
3
7
5
7
Sample Output
4
Hint
數據范圍:1<=N<=1000,奶牛序號的范圍是0到1000000。
說明:通過除去所有序號為3的奶牛,我們就得到了2777757這樣一個序列,那么最長的連續的有相同序號的區間長度就是4。
分析
直接暴力,先枚舉刪哪個序號,再把刪除序號后的序列求出來,再求最長的連續的有相同序號的區間長度。
如果不是數據水,這題也不可能做出來。
程序:
var i,j,max,tj,n,w,ch:longint; a,zfc:array[0..2000]of longint; beginassign(input,'cowrow.in');reset(input);assign(output,'cowrow.out');rewrite(output);readln(n);for i:=1 to n doread(a[i]);max:=0;for i:=1 to n dobeginw:=a[i];ch:=0;for j:=1 to n doif a[j]<>w thenbegininc(ch);zfc[ch]:=a[j];end;tj:=0;for j:=1 to ch+1 doif zfc[j]=zfc[j-1] then inc(tj)elsebegininc(tj);if tj>max then max:=tj;tj:=0;end;if tj>max then max:=tj;fillchar(zfc,sizeof(zfc),a[n]+1);end;write(max);close(input);close(output); end.轉載于:https://www.cnblogs.com/YYC-0304/p/9500067.html
總結
- 上一篇: 两人过桥
- 下一篇: 单源最短路径(spfa)