题解 | 杨辉三角
杨辉三角
https://www.nowcoder.com/practice/e671c6a913d448318a49be87850adbcc
杨辉三角每一行的长度等于行数+1,我们可以创建一个n*n的数组,来存储杨辉三角。但是没有必要,因为c++有vector,可以动态申请空间。我们可以定义一个vector<vector<int>>来存储。这样就不会有内存浪费的问题。
1.开辟空间:先开辟一个n行的二维数组,然后再利用for循环,对每一行进行开辟空间。
2.初始化:杨辉三角的每一行的第一个和最后一个元素都是1,我们可以申请每一行的空间时,进行初始化,初始化为全1.
3.填表:直接从第2行开始(下标从0开始),每一行从第1个开始,利用vv[i][j] = vv[i-1][j] + vv[i-1][j-1].
#include <iostream> #include <vector> using namespace std; int main() { int n = 0; cin >> n; vector<vector<int>> yanghui(n); for (int i = 0; i < n; ++i) { yanghui[i].resize(i + 1, 1); } for (int i = 2; i < n; ++i) { for (int j = 1; j < yanghui[i].size() - 1; ++j) { yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j]; } } for (int i = 0; i < n; ++i) { for (auto e : yanghui[i]) printf("%5d", e); cout << endl; } cout << endl; return 0; }