递推之杨辉三角
来源:互联网 发布:淘宝数据魔方有用吗 编辑:程序博客网 时间:2024/05/22 01:37
- 问题描述
杨辉三角,历史悠久,是我国古代数学家杨辉揭示二项展开式各项系数的数字三角形。
我国北宋数学家贾宪约1050年首先使用“贾宪三角”进行高次开方运算,南宋数学家杨辉在《详解九章算法》记载并保存了“贾宪三角”,故称杨辉三角。元朝数学家朱世杰在《四元玉鉴》扩充了“贾宪三角”成“古法七乘方图”。在欧洲直到1623年以后,法国数学家帕斯卡才发现了“帕斯卡三角”。
杨辉三角构建规律主要包括横行各数之间的大小关系以及不同横行数字之间的联系,奥妙无穷:每一行的首尾两数均为1;第k行共k个数,除首尾两数外,其余各数均为上一行的肩上两数的和。如图3-1为5行杨辉三角。
】
设计程序,打印杨辉三角形的前n行(n从键盘输入)。 - 算法分析
考察杨辉三角形的构成规律,三角形的第i行有i个数,其中第1个数与第i个数都是1,其余各项为它的两肩上数之和(即上一行中相应项及其前一项之和)。
设置二维数组a(n,n),根据构成规律实施递推:
递推关系: a(i,j)=a(i-1,j-1)+a(i-1,j) (i=3,…,n;j=2,…,i-1)
初始值: a(i,1)=a(i,i)=1 (i=1,2,…,n)
为了打印输出左右对称的等腰数字三角形, 设置二重循环: 设置i控制打印n行,每一行开始换行,打印40-3i个前导空格;设置j循环控制打印第i行的各数组元素a(i,j)。 - 程序代码
#include <iostream>#include <cstring>using namespace std;int main(){ int n; cin >> n; //动态库开辟一个二维数组,会造成浪费n个int*的空间 int** arr = new int*[n]; for (int i=0; i<n; ++i) { arr[i] = new int[n]; } //init for (int i=0; i<n; ++i) { memset(arr[i], 0, sizeof(int)*n); arr[i][0] = 1; arr[i][i] = 1; } //calc for (int i=2; i<n; ++i) { for (int j=1; j<n-1; ++j) { arr[i][j] = arr[i-1][j-1] + arr[i-1][j]; } } //traverse for (int i=0; i<n; ++i) { //打印空格 for (int k=0; k<40-3*i; ++k) cout << ' '; for (int j=0; j<=i; ++j) { printf("%6d", arr[i][j]); } cout << endl; } //free for (int i=0; i<n; ++i) { delete[] arr[i]; } delete[] arr; return 0;}
0 0
- 递推之杨辉三角
- HDU-#2032 杨辉三角(递推 & 二项式定理)
- 算法竞赛入门经典:第十章 数学概念与方法 10.6递推之杨辉三角
- hdoj 3664 Permutation Counting 【递推 有点类似杨辉三角】
- 输出打印杨辉三角(队列实现及数组递推实现)
- uva1635(唯一分解定理,杨辉三角二项式递推公式)
- 数组之杨辉三角
- 数学之杨辉三角
- 蓝桥杯之杨辉三角
- js之杨辉三角
- 杨辉三角之二
- 数论之杨辉三角
- 【刷题之路】生成杨辉三角/帕斯卡三角
- 2017多校联合第七场1010/hdu 6129 Just do it(递推/杨辉三角)
- 杨辉三角/帕斯卡三角
- 每天OnLineJudge 之 “杨辉三角 ”
- 每天OnLineJudge 之 “杨辉三角 ”
- 杨辉三角之c++队列实现
- Android Studio 高级配置
- 蓝桥杯+数字拆分
- 深入分析Parquet列式存储格式
- androidstudio多个module放在一个目录下
- 爬虫 登入电驴
- 递推之杨辉三角
- Struts之ActionSupport
- 利用NSNotificationCenter消息通信机制观察UITextField的状态(Swift)
- 简单的mvc 框架(五)
- 设计模式:命令模式(Command)
- 哈工大LTP和中科院NLPIR中文分词比较
- ios RunTime运用
- 感知哈希原理及实现
- LeetCode Patching Array