杨辉三角

发布时间 2023-05-16 22:48:39作者: 祝我好運

1.问题描述

编程打印直角杨辉三角形

2.问题分析

主要就是用到了二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制,杨辉三角符合的规律:

每个数等于它上方两数之和。

每行数字左右对称,由1开始逐渐变大。

第n行的数字有n项。

第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

3.算法设计

先根据设定的行数定义一个二维数组,然后使用一个双层循环,外层循环的因子为杨辉三角的行数,内层循环用来将杨辉三角每行的数字存入数组。每行第一个数和最后一个数都是1,中间的数字等于它上方两数之和。
最后再通过两层循环将二维数组中的数字打印。

4.程序

#include <iostream>
using namespace std;
#define LINE_MAXIMUM 10 //行数
int main()
{
    int i = 0, j = 0;
    int array[LINE_MAXIMUM][LINE_MAXIMUM] = { 0 };

    /* 填充二维数组 */
    for (i = 0; i < LINE_MAXIMUM; i++) //行数
    {
        for (j = 0; j <= i; j++) //每行的列数(第n行的数字有n项)
        {
            if (j == 0 || j == i) //每行第一列和最后一列为1
                array[i][j] = 1;
            else //每个数等于它上方两数之和
                array[i][j] = array[i - 1][j - 1]\
                + array[i - 1][j];
        }
    }

    /* 打印杨辉三角(直角) */
    for (i = 0; i < LINE_MAXIMUM; i++)
    {
        for (j = 0; j <= i; j++)
            cout<<array[i][j];
        cout << endl;
    }
    return 0;
}