2043:【例5.11】杨辉三角形

1.杨辉三角形

【题目描述】

例5.11 打印杨辉三角形的前n(2≤n≤20)行。杨辉三角形如下图:

当n=5时

        1
      1   1
    1   2   1
  1   3   3   1
1   4   6   4   1

输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

【输入】
输入行数n。

【输出】
输出如题述三角形。n行,每行各数之间用一个空格隔开。

【输入样例】
5
【输出样例】
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

2.源码

#include<iostream>
using namespace std;
int a[1000][1000];
int i,j;
int main()
{ 
    int n;
    cin>>n;
    for(i=0;i<n;i++){
		for(j=0;j<=i;j++){
			if(j==0||i==j){
				a[i][j]=1;
			}
			else{
				a[i][j]=a[i-1][j-1]+a[i-1][j];
			}
		}
	}
	for(i=0;i<n;i++){
		for(j=0;j<=i;j++){
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;  
}

3.图文题解

输出样例转换成了图形:
在这里插入图片描述

  上图是以( i , j )的方式进行展示的。

  从图中可以发现1有好多个,观察一下元素1的坐标。

  得出结论:只要j是0的情况下,元素都是1,还有i等于j的时候,元素也是1。

  所以,我们就可以得出下列的条件。我们只要满足其中一个条件,就让二维数组存储元素1。

if(j==0||i==j){
	 a[i][j]=1;
}

  当元素不是1的情况下,就会出现下面的规律:
在这里插入图片描述

  左上角的值会和上面的值进行相加,得出一个新的值,这便是杨辉三角的规律,也是杨辉三角的特点。

  例如:a[2][1]=a[1][0]+a[1][1]

  通过图形+例子得出公式:

a[i][j]=a[i-1][j-1]+a[i-1][j];

  主要问题解决之后,接着,只要用循环遍历一下二维数组,就能打印杨辉三角了。

  注意事项:根据n的范围:2≤n≤20 ,得出二维数组定义的方法:int a[n+1][n+1];

  因此,下面就出现了第二种写法:只要比n的范围大即可。

#include<iostream>
using namespace std;
int i,j;
int main()
{ 
    int n;
    cin>>n;
    int a[n+1][n+1];
    for(i=0;i<n;i++){
		for(j=0;j<=i;j++){
			if(j==0||i==j){
				a[i][j]=1;
			}
			else{
				a[i][j]=a[i-1][j-1]+a[i-1][j];
			}
		}
	}
	for(i=0;i<n;i++){
		for(j=0;j<=i;j++){
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值