C語言精選名題百則 第一章(序曲)

2021-09-12 09:04:59 字數 1858 閱讀 6367

問題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就是該陣列中最長的平台。

//最長平台問題 

int longest_plateau(int x,int n)

}} return sum;

}

標答:

int dominance_count(int f,int g,int m,int n)

} return count;

}

問題1.4兩陣列最短距離(mindist.c )

已知兩個元素從小到大排列的陣列x與y,請編寫乙個程式算出兩個陣列元素彼此之間差的絕對值中最小的乙個數,此值稱做陣列的距離。

【說明】

如果x[i]與y[j]是兩個元素,那麼lx[i]-y[j]l就是這兩個元素之間的距離,所有填些距離 的極小值,稱為陣列的距離。比如說x有1,3,5,7,9,y有2,6,8,那麼最短距離是1, 因為x[0]與y[0]、x[1]與y[0〗、x[2]與y[1]、x[3]與y[l],還有x[4]與y[2]的距離都是1。

注意,如果x與y各有m與n個元素,那麼元素之間的距離就一共有m*n個;事實上往往用不著這麼多個值,應該活用對x與y已經排列好的特性,不要把所有的距離都算出來。

兩陣列最短問題 

#include #define min(x,y) ( (x)<(y) ? (x) : (y) )

int min_distance(int x,int y,int m,int n)

else

}return minimum;

}

問題1.5等值首尾和(headtail.c )

假設有乙個陣列x,它有n個元素,每乙個都大於零;稱x[0]+x[1]+…+x[i]為前置和(prefix sum),而 x[j]+xlj+1]+…+x[n-1]為後置和(suffix sum)。試編寫乙個程式,求出 x中有多少組相同的前置和與後置和。

【說明】

如果x的元素是3,6,2,1,4,5,2,於是x的前置和有以下7個,即3,9,11,12, 16,21,23;後置和則是2,7,11,12,14,20,23;於是11、12與23這3對就是值相同的前置和與後置和, 因為:

11=3+6+2 (前置和)=2+5+4 (後置和)

12=3+6+2+1 (前置和)=2+5+4+1 (後置和)

由於23是整個陣列元素的和,因此前置和與後置和一定相同。

當然,也可以用上面的方法把前置和與後置和都先算出來(兩者都是從小到大的遞增 序列,為什麼?),再進行比較,但建議不要使用這種方法,因為它需要額外的記憶體。

【解答】

既然不用額外的陣列,前置和與後置和又不能省略而不算,就只能用兩個指標,乙個 指標從頭到尾走,並且記錄下到目前為止的前置和;再用另乙個指標從尾到頭走,並且記 錄下到目前為止的後置和。接著,比較目前的前置和與後置和,如果相等,就得到了一組, 然後增加往後走的指標,降低往回走的指標,繼續工作。如果前置和大於後置和,這就表 示要增加後置和才能比較長短,所以就降低往回走的指標,更新後置和,再繼續;至於後 置和大於前置和的情況則是相對稱的,就省略了,請自行閱讀程式。

等值首尾和問題

int head_tail(int x,int n) }

return count;

}

《C語言名題精選百則 7》

這次終於遇到點挑戰了,先上題目吧 我的答案 trente.c includevoid test int testnum,int limit void print int v,i,n,g,t,c,q,r,e int main void test int testnum,int limit int ea...

C語言精選名題百則 第二章(數字問題)

問題2.3求質數 prime1.c 試編寫乙個程式,找出前n 如200 個質數。如果沒有進一步要求,這不是難題。但在此希望從所知的 使用除法的方法中,用最快的辦法來編寫程式。說明 可能最先想到的辦法,就是讓某個變數i從2變到n,然後檢查它是不是質數,如果是就顯示出來,如果不是,就檢查下乙個。這是正確...

C 程式語言(第一章)

一.全書結構 1,1 3章,c 程式設計風格,以及有關c 標準庫的綜述 2,4 9章,c 內部型別 3,10 15,c 物件導向和通用型程式設計 4,16 22,c 標準庫 5,23 25,設計和開發軟體 6,附錄 二.給c程式設計師得建議 1,c 裡幾乎不需要用巨集,用const或enum定義明顯...