int ack(int m, int n)
ack(3,3)的輸出是什麼?
假設我們將ack(m,n)填充到乙個二維矩陣的第m行第n列,從函式中可以看出第m行第n列的資料依賴於第m-1行和第m行第n-1列的資料。
根據
if(m == 0)
return n + 1;
可以填充第0行的資料為0,1,2,3,4,5,6,7..........
根據
else if(n == 0)
return ack(m - 1, 1);
可以填充第1行第0列的資料為ack(0,1)
根據
else
return ack(m - 1, ack(m, n -1 ));
可以填充第一行的剩餘資料。
依照上面方法可以填充每一行的第0列和其他各列的資料。前三行的資料還是可以看出規律的,最終可以得出ack(3,3) = 61
解谷歌的一道題
這幾天有一道google的面試題在論壇炒得很火,題目如下 有乙個100層高的大廈,你手中有兩個相同的玻璃圍棋子。從這個大廈的某一層扔下圍棋子就會碎,用你手中的這兩個玻璃圍棋子,找出乙個最優的策略,來得知那個臨界層面。下面給出我的分析和解答。為了得到兩個棋子的最優策略,我們先簡化問題,看看乙個棋子的情...
解一道簡單的演算法題
原題是這樣的 乙個未排序整數陣列,有正負數,重新排列使負數排在正數前面,並且要求不改變原來的正負數之間相對順序。比如 input 1,7,5,9,12,15 ans 5,12,1,7,9,15 且要求時間複雜度o n 空間o 1 我實現的解法 解法1 不考慮時間和空間複雜度 則每次找到乙個正數,取出...
巧解一道階乘排序題
今天,介紹一道在本計算機考試書上的階乘排序 就是將乙個列表長度的階乘種的方式的排列組合輸出 題。下面我們直接看題 在1 49中任意選擇7個數,將這7個數的所有排列可能性全部輸出。例如 1,2,3 的所有輸出有 2,1,3 2,3,1 3,2,1 3,1,2 1,3,2 1,2,3 這道題的關鍵是要找...