前言
今天咱一起学习一下杨辉三角。
一、杨辉三角
题目来源:
描述
KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
输入描述:
第一行包含一个整数数n。 (1≤n≤30)
输出描述:
包含n行,为杨辉三角的前n行,每个数输出域宽为5。
二、分析问题
首先我们看杨辉三角的形式
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
可能数学不太好的人(比如我),感觉毫无头绪,找不到规律,没有规律就没法解题,这肯定是不行的,其实我们去查找资料就不难知道,杨辉三角的规律其实很简单:首位和末尾是1,然后除了1的部分,它的数字等于它上面,和左上两个数字之和,那我们就可以解题了!
三、解决问题
代码如下:
#include<stdio.h> int main(){ int n; scanf("%d",&n); int arr[30][30]={0}; for(int i=0;i<n;i++){ for(int j=0;j<=i;j++){ if(j==0||j==i){ arr[i][j]=1; //首先输入首位的1 } else{ arr[i][j]=arr[i-1][j]+arr[i-1][j-1]; //如果不是1,上面+左上 } } } for(int i=0;i<n;i++){ for(int j=0;j<=i;j++){ printf("%5d",arr[i][j]); //域宽为5,输出 } printf("\n"); //记得换行 } return 0; }
总结
以上就是解题和大家学习的内容,本文只是简单地介绍了一下杨辉三角的解法,如果有不同的意见欢迎交流,码字不易,请多多支持~