【題目講解】楊輝三角
楊輝三角
打印楊輝三角形的前n(2≤n≤20)行。楊輝三角形如下圖:
當(dāng)n=5時(shí)
1??
1???1
1???2???1
1???3???3???1
1???4???6???4???1
【輸入】輸入行數(shù)n
【輸出】輸出如題述三角形。n行,每行各數(shù)之間用一個(gè)空格隔開
分析
每列數(shù)字的數(shù)量最多不超過當(dāng)前行數(shù)
第一列和最后一列上的數(shù)字都是1
當(dāng)前數(shù)(比如上圖首次出現(xiàn)的4)等于上面一行的當(dāng)前列上的數(shù)字(上面的數(shù)字3)+上面一行的前一列上的數(shù)字(3前面的數(shù)字1),再比如6,就等于上面一行與6同列的3加上3前面的數(shù)字3
行內(nèi)輸出空格,隔行輸出換行endl
參考程序
#include?<iostream>
using?namespace?std;
int?main()
{
?int?n,a[30][30];
?//輸入行
?cin?>>?n;
?//外層循環(huán)代表行?i?
?for(int?i=1;i<=n;i++){
??//內(nèi)層循環(huán)代表列?j
??//列數(shù)最多不超過當(dāng)前行數(shù)
??for(int?j=1;j<=i;j++){
???//第一列和最后一列的所有數(shù)都是1
???if(j==1||i==j)?a[i][j]?=?1;
???//當(dāng)前數(shù)等于上面一行的當(dāng)前列+上面一行的前一列?
???else?a[i][j]?=?a[i-1][j]+a[i-1][j-1];
??}?
?}?
?for(int?i=1;i<=n;i++){
??for(int?j=1;j<=i;j++){
??????//行內(nèi)之間輸出空格
???cout?<<?a[i][j]?<<?"?";
??}
????//隔行輸出換行
??cout?<<?endl;
?}?
?return?0;
}