此問題來自《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都是平台,編寫乙個程式接收乙個陣列,把這個陣列中平台最長的平台找出來,在上面的例子中,3,3,3就是陣列中最長的平台。
需要考慮一下幾點:
1.使用變數越少越好;
2.能否把陣列的元素每乙個都只查一次就得到結果?
3.程式語句越少越好。
我的想法是,用乙個變數儲存最長平台數值,再用乙個變數儲存最長平台長度,函式要返回這兩個數值,就得用結構體
typedef structplateau;
如何計算平台長度?
當當前數值和前乙個數值不相等時,統計前乙個平台的長度,將這個長度和最長平台相比,如果大於最長平台,則將最長平台的數值和長度都儲存為上乙個平台的數值和長度,否則,當前值和前乙個值相等,則將平台的長度+1;
if (arr[i] != arr[i-1] && length > max.num)elseplate;
plate longest_plateau(int a,int n)
{ plate longest;
longest.length = 1;
int data;
int i;
for(i=1;i
執行過程:
longest.length = 1
i=1, a[i] = a[1] =2 ,
a[i-length] = a[1-1] = a[0] = 1,
a[i] != a[i-longes.tlength] , if裡的語句不執行,longest.ength = 1
i=2, a[i] = a[2] =2;
a[i-length] = a[2-1] = a[1] = 2,
a[i] = a[i-longes.tlength] , if裡的語句執行,longest.length = longest.length +1 = 2; longest.data = a[i] = a[2] = 2;
i=3, a[i] = a[3] = 3;
a[i-length] = a[3-2] = a[1] = 2,
a[i] != a[i-longes.tlength] , if裡的語句不執行,longest.length = 2;
i=4, a[i] = a[4] = 3;
a[i-length] = a[4-2] = a[2] = 2,
a[i] != a[i-longes.tlength] , if裡的語句不執行,longest.length = 2;
i=5, a[i] = a[5] = 4;
a[i-length] = a[5-2] = a[3] = 3,
a[i] != a[i-longes.tlength] , if裡的語句不執行,longest.length = 2;
i=6, a[i] = a[6] = 4;
a[i-length] = a[6-2] = a[4] = 3,
a[i] != a[i-longes.tlength] , if裡的語句不執行,longest.length = 2;
i=7, a[i] = a[7] = 5;
a[i-length] = a[7-2] = a[5] = 4,
a[i] != a[i-longes.tlength] , if裡的語句不執行,longest.length = 2;
i=8, a[i] = a[8] = 5;
a[i-length] = a[8-2] = a[6] = 4,
a[i] != a[i-longes.tlength] , if裡的語句不執行,longest.length = 2;
i=9, a[i] = a[9] = 6;
a[i-length] = a[9-2] = a[7] = 5,
a[i] != a[i-longes.tlength] , if裡的語句不執行,longest.length = 2;
i=10, a[i] = a[10] = 6;
a[i-length] = a[10-2] = a[8] = 5,
a[i] != a[i-longes.tlength] , if裡的語句不執行,longest.length = 2;
i=11, a[i] = a[11] = 6;
a[i-length] = a[11-2] = a[9] = 6,
a[i] != a[i-longes.tlength] , if裡的語句執行,longest.length = longest.length +1 = 3; longest.data = a[i] = a[11] = 6.
執行結果
最長平台問題
該問題出自 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...
最長平台問題
問題 已知乙個已經從小到大排序的陣列,這個陣列中的乙個平台就是連續的一串值相同的元素,並且這一串元素不能再延伸。例如,在1,2,2,3,3,3,4,5,5,6中的1,2.2,3.33,4,5.5,6都是平台。試編寫乙個程式,接受乙個陣列,把這個陣列中的最長平台找出來。在上面的例子中3.3.3就是該陣...
1116 最長平台 c
題目描述 已知乙個已經從小到大排序的陣列,這個陣列的乙個平台 plateau 就是連續的一串值相同的元素,並且這一串元素不能再延伸。例如,在 1,2,2,3,3,3,4,5,5,6中1,2 2,3 3 3,4,5 5,6都是平台。試編寫乙個程式,接收乙個陣列,把這個陣列最長的平台找出來。在上面的例子...