给出 n(n≤20),输出杨辉三角的前 n 行。
输入样例
6
输出样例
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
思路
规律就是(x,y)
处的数字应该等于(x,y-1)
和(x-1,y-1)
两处数字的和。比如第三行第二个数字2
是第二行的两个1
的和。
开一个二维数组,不要第0
行和0
列,初始就给0
,初始化指定nums[1][1]=1
,这样可以解决每一行第一个数字和最后一个数字的问题,它们等于0+1=1
。
最终代码
#include<iostream>
using namespace std;
int nums[666][666] = {0}, n;
void printA();
int main(){
cin >> n;
nums[1][1] = 1;
for (int i = 2; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
nums[i][j] = nums[i-1][j] + nums[i-1][j-1];
}
}
printA();
return 0;
}
void printA() {
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
cout << nums[i][j] << " ";
}
cout<<endl;
}
}