输出打印杨辉三角(队列实现及数组递推实现)
来源:互联网 发布:淘宝怎么提高买家信誉 编辑:程序博客网 时间:2024/06/04 18:57
输出打印杨辉三角属于队列实现的例子。
杨辉三角的特点我们都知道,每行的数字等于其上层左右两个数字之和。
通过队列,将输出的数字保存入队,因为后面的数字需要用到前面的数字和的运算。第一行的1是默认直接入队输出的,每行的最后一个1也是默认输出的,它与前面的数字没有关系。其他的数字可以通过队头元素和下一个元素之和求得。注意第一个元素是通过上面的1和在其左边添一个0得到的。
#include <iostream>#include <queue>using namespace std;void print_Triangle(int n){ queue<int>q; for(int i=0;i<2*n-1;i++) //控制输出,美观 cout<<" "; cout<<1<<" "<<endl; //输出第一行的1 q.push(1); int s1,s2; for(int i=2;i<=n;i++){ for(int k=0;k<2*n-i;k++) //控制输出,美观 cout<<" "; s1 = 0; for(int j=1;j<=i-1;j++){ s2 = q.front(); q.pop(); //出队 cout<<s1+s2<<" "; q.push(s1+s2); s1 = s2; //s1保留的是前一个数 } cout<<1<<endl; //输出每行最后一个1 q.push(1); }}int main(){ int n; cin>>n; //输入要得到的杨辉三角的行数 print_Triangle(n); return 0;}
当时她问我,能不能不看书上的代码,我自己写出来。我想,不看书上的代码,我完全可以另一种简单的做法解决。。
记数组a[i][j]表示第i行第j列的数字,除了一些个别位置的数字默认赋值为1外,其他的数字可以用以下公式:
a[i][j] = a[i-1][j-1] + a[i-1][j]
也就是各行的数字等于上一行肩上的两数字之和,之后输出便是。
#include <iostream>using namespace std;int main(){ int a[10][10]; //保存杨辉三角的元素 for(int i=1;i<10;i++){ for(int j=1;j<=i;j++){ if(i==1&&j==1) a[i][j] = 1; else{ if(j==1 || j==i) a[i][j] = 1; else a[i][j] = a[i-1][j-1] + a[i-1][j]; } } } int n; cin>>n; for(int i=1;i<=n;i++){ for(int k=0;k<2*n-i;k++) //控制输出,美观 cout<<" "; for(int j=1;j<=i;j++){ cout<<a[i][j]<<" "; } cout<<endl; } return 0;}
0 0
- 输出打印杨辉三角(队列实现及数组递推实现)
- 队列实现杨辉三角打印
- 队列实现 杨辉三角的打印
- 【打印杨辉三角】数组实现
- 利用队列实现杨辉三角的打印
- 用循环队列实现打印杨辉三角(数据结构)
- 利用循环队列实现杨辉三角的打印
- 用C++队列模板实现杨辉三角的输出
- 队列实现杨辉三角
- 利用循环队列打印输出杨辉三角
- 数组实现杨辉三角
- java 实现打印杨辉三角
- 用java实现打印杨辉三角
- java 实现打印杨辉三角
- java实现杨辉三角打印
- 打印杨辉三角系数(Pascal's Triangle / 二项式展开系数)队列实现
- 杨辉三角(打印出三角形)的一维数组和二维数组实现
- 用队列实现杨辉三角
- linux系统工程师修改打开文件数限制代码教程。服务器运维技术
- MySQL学习15:子查询(二)
- ListView构建层级树形控件
- arcpy站点包中常用方法与函数
- mysql 去安全隐患 mysql_secure_installation
- 输出打印杨辉三角(队列实现及数组递推实现)
- C++常见知识点总结
- java多线程
- 成功路上的九种商
- Reactor模式
- Java 异常
- OS X 快捷键——下篇
- Docker学习笔记4.2-Dockerfile指令详述
- Leetcode 111. Minimum Depth of Binary Tree