最近看了一本書,書上描述了各種比較有意思的著名命題; 想想為了提高自己c語言的實踐水平,決定對立面的命題進行實踐。
下面描述的乙個問題是: 平台問題。
/*最長平台問題:
存在已排序陣列,陣列中的乙個平台就是連續的一串
值相同的元素,並且這一串元素不能再延伸。
例如:1,2,2,3,3,3,4,5,5,6 中有平台
1 2.2
3.3.3
45.5
6並且最長平台是:3.3.3
*/
然後就自己是實現了乙個解決方案,**如下:
exp_1:
標頭檔案:
#ifndef result_def#define result_def 0
#define result_def_h 1
#endif
/*result結構體用來儲存查詢的結果
*/#if result_def_h
typedef struct
result;
#endif
c檔案:
/*最長平台問題:
存在已排序陣列,陣列中的乙個平台就是連續的一串
值相同的元素,並且這一串元素不能再延伸。
例如:1,2,2,3,3,3,4,5,5,6 中有平台
1 2.2
3.3.3
45.5
6並且最長平台是:3.3.3
*/#include
#include "
type.h
"void plateau(const
int i_array,int array_len,result *node);
int main(int argc,char *ar**);//
int i;
node.i_number=0;
node.i_repeat_time=0;
/*注意乙個sizeof的錯誤用法:
i=sizeof(i_array);
在wintc中這樣可以實現,但是在vc 2008裡面不能這樣用
*/plateau(i_array,sizeof(i_array)/sizeof(int),&node);
if(node.i_repeat_time > 0)
return0;}
/*函式功能:尋找已排序陣列的最長平台
最長平台問題:
存在已排序陣列,陣列中的乙個平台就是連續的一串
值相同的元素,並且這一串元素不能再延伸。
例如:1,2,2,3,3,3,4,5,5,6 中有平台
1 2.2
3.3.3
45.5
6並且最長平台是:3.3.3
函式原型:
void plateau(const int i_array,int array_len,result *node)
函式引數:
const int i_array: 待尋找的陣列
int array_len:陣列長度
result *node:儲存搜尋結果
其中 result 為結構體
typedef struct
result;
異常:*/
void plateau(const
int i_array,int array_len,result *node)
if(temp.i_repeat_time > (*node).i_repeat_time)
}}
上面實現的**沒有考慮當存在兩個同樣長度的平台的時候怎麼處理,如果需要的話,需要對功能進行完善。
**的執行結果如下圖所示:
C語言學習趣事 關於指標轉換
c語言學習趣事 關於指標轉換 volcanol c語言學習趣事 關於指標轉換 今天在gmail的群組討論貼中看到這樣乙個帖子 learn linux c cpp 一維陣列轉成指向陣列的指標 收件箱x zhangzhe benzhemin gmail.com 11 10 28 傳送至 learning...
C語言學習1
今天可能是開始學習重點了,講了許多的東西,並且老師也對c語言這門學科的各個方面進行了闡述,我發現就算是把這門學科的知識都學完了也才是基礎,這門學科的博大,今天的知識有點多,因為以前也學過js,而今天又主要講了運算子和表示式,所以對於今天的知識還是比較容易了,還講了型別之間的轉換,這也是比較重要的 像...
C語言學習 1
c語言中的6種語句 標號語句,復合語句,表示式語句,選擇語句,迭代語句,跳轉語句。乙個簡單的c程式 include int main void include 則行 是一條c預處理指令。通常,c編譯器在編譯前會對源 做一些準備工作,即預處理。所有的c編譯器軟體包都提供stdio.h檔案。該檔案中包含...