介紹
楊輝三角的最本質特徵是,它的兩條斜邊都是由數字1組成的,而其餘的數則是等於它肩上的兩個數之和。
分析
每行的第乙個 和最後乙個元素的值為1,設第x行的第y個元素為c(x,y),遞迴結束條件為x等於y或y等於1,否則c(x,y)=c(x-1,y)+c(x-1,y-1)。
**
#include
#include
#include
//遞迴函式
int c(int x,int y)
//非遞迴函式
void cc(int n)
for(i=2;ifor(j=1;j1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<=n;i++)
printf("\n");
}}int main()
system("pause");
return
0;}
遇到的問題
最開始我是想直接用n*n陣列儲存楊輝三角的兩條為1的斜邊,其餘為0,然後遍歷用楊輝三角的特性來加數,最後發現有個bug,就是數1會被重置,是行不通的。
演算法學習之旅,中級篇(2) 插入排序
介紹 每次從無序表中取出第乙個元素,把它插入到有序表中的合適位置。分析 第一趟 比較前兩個數的大小,然後把其中最小的插入排在第乙個位置。第二趟 比較第三個數與前兩個數的大小,大的數後移,知道遇到小的,便插入到較小數的後面,數不再移動。依次進行,進行了n 1躺後,就完成了整個排序過程。include ...
演算法學習 遞迴之漢諾塔
漢諾塔問題 如下圖所示,從左到右有a b c三根柱子,其中a柱子上面有從小疊到大的n個圓盤,現要求將a柱子上的圓盤移到c柱子上去,期間只有乙個原則 一次只能移到乙個盤子且 子不能在小盤子上面,求移動的步驟和移動的次數 1個盤的時候,只需要移動1次即可達成目標,g 1 1 步驟一 2個盤的時候,需要移...
演算法學習之旅,初級篇(30) 刪除鍊錶內節點
介紹 給定單向鍊錶的頭指標和第幾個節點,定義乙個函式在o 1 時間刪除該節點。分析 先遍歷找到節點指標,然後進行刪除 include include typedef struct listnode listnode void deletenode listnode pnode,listnode pd...