3. 杨辉三角

1 题目描述

杨辉三角

成绩10开启时间2021年09月17日 星期五 18:00
折扣0.8折扣时间2021年11月6日 星期六 00:00
允许迟交关闭时间2021年11月21日 星期日 00:00

杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。

输入描述

输入正整数n,表示杨辉三角的行数

输出描述

根据输入的n,打印对应的杨辉三角

为了更美观,每个数字有5位,不足的位用空格补齐,比如1,输出为####1,输出时#为空格

111,输出为##111,输出时#为空格


 测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1以文本方式显示
  1. 5↵
以文本方式显示
  1.                         1↵
  2.                    1         1↵
  3.               1         2         1↵
  4.          1         3         3         1↵
  5.     1         4         6         4         1↵
1秒64M0
测试用例 2以文本方式显示
  1. 10↵
以文本方式显示
  1.                                                  1↵
  2.                                             1         1↵
  3.                                        1         2         1↵
  4.                                   1         3         3         1↵
  5.                              1         4         6         4         1↵
  6.                         1         5        10        10         5         1↵
  7.                    1         6        15        20        15         6         1↵
  8.               1         7        21        35        35        21         7         1↵
  9.          1         8        28        56        70        56        28         8         1↵
  10.     1         9        36        84       126       126        84        36         9         1↵
1秒64M0

代码

// 利用数组解决这个问题
// 主要依据公式 a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
// 类似边框这样不符合函数规律的事先进行赋值
// 需要创建个二维数组保存所有的数据

#include <cstdio>
#include <cstdlib>

void YHtriangle(const int n) {


	int** array = new int* [n];
	for (int i = 0; i < n; i++)
	{
		array[i] = new int[n];
	}
	int i, j;
	int formatcounter;

	for (i = 0; i < n; i++) {
		array[i][0] = 1;
		array[i][i] = 1;
	}
	for (i = 2; i < n; i++) {
		for (j = 1; j < i; j++) {
			array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
		}
	}
	for (i = 0; i < n; i++) {
		for (formatcounter = 0; formatcounter < n - i - 1; formatcounter++) {
			printf("     ");
		}
		for (j = 0; j < i + 1; j++) {
			printf("%5d", array[i][j]);
			if (i == j) {
				printf("\n");
			}
			else {
				printf("     ");
			}
		}
	}

	for (int i = 0; i < n; i++)
	{
		delete array[i];
	}
	delete array;

}

int main(int argc, char* argv[]) {
	int n;
	scanf("%d", &n);

	if (n < 1) return 0;

	YHtriangle(n);

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值