首页 > 学院 > 开发设计 > 正文

杨辉三角算法

2019-11-08 02:18:50
字体:
来源:转载
供稿:网友

问题描述 杨辉三角形又称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);}

程序结果图


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表