該問題出自《c語言名題精選百則技巧篇》。大意是:找出一段有序數字中,找出最長而且連續的數字。比如在1,2,2,3,3,3,4,5,5,6中最長平台即為3,長度也是3。
我的**如下:
#include #include int main()
; //in order
result=x[0];
int size=sizeof(x)/sizeof(int); //the number of the integer array
for(i=0;i+l
我的想法非常樸素:從第乙個數開始,l初始為0,遍歷尋找第乙個數的長度。例子中第乙個數長度為1,進入第二個數,得l=2。以此類推,在o(n2)的時間複雜度內得到結果。
但是書上的演算法**更少,時間複雜度卻更低。
書中**如下:
#include #include int main()
; //in order
int size=sizeof(x)/sizeof(int);
int result=0;
int l=1;
for(int i=1;i
總結:演算法的學習,思考是關鍵。
最長平台問題
問題 已知乙個已經從小到大排序的陣列,這個陣列中的乙個平台就是連續的一串值相同的元素,並且這一串元素不能再延伸。例如,在1,2,2,3,3,3,4,5,5,6中的1,2.2,3.33,4,5.5,6都是平台。試編寫乙個程式,接受乙個陣列,把這個陣列中的最長平台找出來。在上面的例子中3.3.3就是該陣...
最長平台問題 C實現
此問題來自 c語言名題精選百則 問題1.1最長平台 plateau.c 已知乙個從小到大排序的陣列,這個陣列中的乙個平台 plateau 是連續的一串值相同的元素,並且這一串元素不能再延伸,例如,在1,2,2,3,3,3,4 5 5 6中1,2.2,3.3.3,4,5.5,6都是平台,編寫乙個程式接...
1116 最長平台
時間限制 1000 ms 記憶體限制 65536 kb 提交數 14661 通過數 4430 已知乙個已經從小到大排序的陣列,這個陣列的乙個平台 plateau 就是連續的一串值相同的元素,並且這一串元素不能再延伸。例如,在 1,2,2,3,3,3,4,5,5,6中1,2 2,3 3 3,4,5 5...