***知識點:二維陣列下標的運用與楊輝三角的理解。
楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡(1623----1662)是在2023年發現這一規律的,比楊輝要遲393年,比賈憲遲600年。楊輝三角是中國古代數學的傑出研究成果之一,它把二項式係數圖形化,把組合數內在的一些代數性質直觀地從圖形中體現出來,是一種離散型的數與形的結合 。做這道題時首先我們要知道什麼是楊輝三角,然後再來分析如何把對題理解轉換為**,而這題正好需要二維陣列,因此我們慢慢來分析。
引入資料
11 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
以上資料便是楊輝三角的另一種形式,因為這樣,才能讓大家更容易的找到規律並理解。
藍色線條表示指向,紅色線條表示左右兩數相加。
分析:
可以發現,每一列的元素都是 1 。
每個數等於它上方兩數之和:從第二行第二列開始,就是元素 1,等於上兩個數的和(1+0)。
第n行的數字有n項。(第一行只有元素 1 )
圖形分析完畢,引入二維陣列定義。
我們都知道,一維陣列元素的下標都是從0開始的,那麼必然二維陣列的下標即是從開始。
根據**,圖形中元素0是不顯示出來的,但我們必須賦初值0給陣列。只有這樣,計算機才能得到乙個初始值,進行後面的迴圈累加。
int arr[10]
[10]=
;
第一列的元素都為1,也就是每一行的第乙個元素都是1,那麼直接用迴圈將其賦為1。
for
(int i =
0; i <
10; i++
) arr[i][0
]=1;
接下來,進行迴圈累加,我們知道,每個數等於上兩數之和。
那麼在上面的**中,第二行第二列(2,2)的元素 1 等於第一行第一列(1,1)的元素 1 加第一行第二列(1,2)。
因此我們將這句話轉換為計算機語言:arr[1][1]=arr[0][0]+arr[0][1]。
那麼放到迴圈中,便是下圖所示:
for
(int i =
1; i <
10; i++
)for
(int j=
1;j<
10;j++
)
**演示
#include
using
namespace std;
intmain()
;for
(int i =
0; i <
10; i++
) arr[i][0
]=1;
for(
int i =
1; i <
10; i++
)for
(int j=
1;j<
10;j++
)for
(int i =
0; i <
10; i++
)return0;
}
執行結果
#include
#include
using
namespace std;
intmain()
;for
(int i =
0; i < n; i++
)for
(int i =
2; i < n; i++
)int p;
for(
int i =
0; i < n; i++
) cout << endl;
}return0;
}
列印楊輝三角形
列印楊輝三角形 1000 ms 10000 kb 3016 15287 楊輝三角形具有如下特徵 1 每行數字左右對稱,由1開始逐漸變大,然後變小,回到1。2 第n行的數字個數為n個。3 第n行數字和為2 n 1 4 每個數字等於上一行的左右兩個數字之和。可用此性質寫出整個帕斯卡三角形。5 將第2n ...
列印楊輝三角形
列印楊輝三角形 楊輝三角形就是呈現金字塔型的結構 每個的數字表示式為 a n,x a n 1,x a n 1,x 1 結構如下 11,1 1,2,1 1,3,3,1 1,4,6,4,1 解題思路 迴圈列印的行數,由於對稱型每行的資料型別可以只計算一半,後面的一半完全對折過來。上 public sta...
楊輝三角形
關於楊輝三角的論述 問題描述 楊輝三角形又稱pascal 三角形,它的第 i 1行是 a b i 的展開式的係數。它的乙個重要性質是 三角形中的每個數字等於它兩肩上的數字相加。下面給出了楊輝三角形的前4行 1 11 2 1 1 3 3 1 給出n,輸出它的前n行。輸入格式 輸入包含乙個數n。輸出格式...