題目28 一些簡單題的演算法練習題(2)

2021-05-07 12:40:28 字數 1098 閱讀 5924

宣告:這些題目都是從網際網路上蒐集而來,有些解法屬於原創,有些解法屬於網友

的智慧型,從部落格上找來的解法都會給出鏈結,論壇上的討論就不給出鏈結了。

1. 不用中間變數,實現strlen函式。(strlen為c語言中求給字串長度庫函式)

int strlen(const char *str)

解法比較明顯,不讓用臨時變數,那就用遞迴了。

2. 寫乙個函式,找出乙個陣列中第二大的數,複雜度o(n)

3. 輸出乙個形如下面的數字矩陣(n=4)

1    2     3   4

12 13  14   5

11 16  15   6

10   9    8   7

此題的關鍵是找出其數學規律。源**如下:

4.輸出如下蛇行整數矩陣

n = 3:

7    8    9

6    1    2

5    4    3

n = 4:

7   8   9   10

6   1   2   11

5   4   3   12

17 16 15 13

源**實現:

5. 螺旋數字佇列

21 22 ……

20 7  8  9  10

19 6  1  2  11

18 5  4  3  12

17 16 15 14 13

以數字1為原點,x軸向右為正,y軸向上為正,建立數軸

那麼數字2的座標為(1,0),數字9的座標為(1,1),數字5的座標為(-1,-1)

現在程式設計實現輸入一點(x,y),輸出這點在數軸上對應的值

解析:1.通過計算給定點(x,y)的座標先計算出此點所在的圈

2·計算這個圈四個角上的頂點的數值跟座標

3·比較給定點與這四個頂點的座標,根據這四個頂點的數值計算給定點的數值

源**:

6. 寫出atol的實現**

7:寫乙個函式foo: (從ponba的討論組裡看到這個題,覺得挺有意思的)

void foo(int i, int j)

列印出i到j之間的所有整數。不用任何迴圈和遞迴語句。

題目19 一些簡單的演算法練習題 1

1.比較兩個字串,用o n 時間和恒量空間。源 2.假設你有乙個用1001個整數組成的陣列,這些整數是任意排列的,但是你知道所有的整數都在 1到1000 包括1000 之間。此外,除乙個數字出現兩次外,其他所有數字只出現一次。假設你只 能對這個陣列做一次處理,用一種演算法找出重複的那個數字。如果你在...

題目29 一些簡單的演算法練習題(3)

problem 1.乙個完全二叉樹有386個葉子節點,問它總共有多少個葉子節點。分析 386個葉子節點,那麼它的上層可以確定的非葉子節點有多少個呢?可以用試探法得到,它上面應該有7層,即非葉子節點數應該有2 8 1 255個。根據總的葉子節點數,可以知道第8層一定有葉子節點,可以設第 8層非葉子節點...

一些簡單的程式設計練習題

每當成為入門cs課程 學生們學習程式語言的課程 的助教時,都困於提出好的練習題。project euler和類似的問題通常對初學者來說來難了,尤其是對於那些沒有很強數學背景的同學。在這篇文章中,adrian neumann 收集了一些從初級到高階逐級困難的練習題,適合剛開始學習程式設計的初學者。當有...