问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
要求:给出n,输出它的前n行。
输入格式:输入包含一个数n。
输出格式:输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
样例输入 4 样例输出 1 1 1 1 2 1 1 3 3 1
算法思路: new一个新的二维数组**arr并申请空间:
//动态开辟空间int **arr = new int*[n]; //开辟行for(int i = 0; i < n; i++)arr[i] = new int[i]; //开辟列,用不到n个,只需在i行开辟i个即可考虑会出现的情况:1、杨辉三角的第i行的第0个和第i-1应当是1; 2、其余元素均为其肩上的两个数之和
C++代码实现:
#include<iostream>using namespace std;void yanghui(int n){ int **arr = new int*[n]; for(int i = 0; i < n; i++){ arr[i] = new int[i]; } for(int i = 0; i < n; i++){ for(int j = 0; j <= i; j++){ if(j == 0||j == i){ arr[i][j] = 1; } else arr[i][j] = arr[i-1][j] + arr[i-1][j-1]; cout<<arr[i][j]<<" "; } cout<<endl; }}int main(){ int n; cin>>n; yanghui(n);}新闻热点
疑难解答