打印杨辉三角形的前10行。
2016-01-09 21:18
316 查看
打印杨辉三角形的前10行。杨辉三角形如下图:
1 1
1 1 1 1
1 2 1 1 2 1
1 3 3 1 1 3 3 1
1 4 6 4 1 1 4 6 4 1
[图5-1] [图5-2]
【问题分析】观察图5-1,大家不容易找到规律,但是如果将它转化为图5-2,不难发现杨辉三角形其实就是一个二维表的小三角形部分,假设通过二维数组yh存储,每行首尾元素为1,且其中任意一个非首位元素yh[i][j]的值其实就是yh[i-1][j-1]与yh[i-1][j]的和,另外每一行的元素个数刚好等于行数。有了数组元素的值,要打印杨辉三角形,只需要控制好输出起始位置就行了。
#include<iostream>
#include<iomanip>
using namespace std;
int a[11][11];
int main()
{
int i,j;
a[1][1]=1;
for(int i=2;i<=10;++i)
{
a[i][1]=1;a[i][i]=1;
for(int j=2;j<=i-1;++j)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(int i=1;i<=10;i++)
{
if(i!=10) cout<<setw(30-3*i)<<" ";
for(int j=1;j<=i;j++)
cout<<setw(6)<<a[i][j];
cout<<endl;
}
return 0;
}
1 1
1 1 1 1
1 2 1 1 2 1
1 3 3 1 1 3 3 1
1 4 6 4 1 1 4 6 4 1
[图5-1] [图5-2]
【问题分析】观察图5-1,大家不容易找到规律,但是如果将它转化为图5-2,不难发现杨辉三角形其实就是一个二维表的小三角形部分,假设通过二维数组yh存储,每行首尾元素为1,且其中任意一个非首位元素yh[i][j]的值其实就是yh[i-1][j-1]与yh[i-1][j]的和,另外每一行的元素个数刚好等于行数。有了数组元素的值,要打印杨辉三角形,只需要控制好输出起始位置就行了。
#include<iostream>
#include<iomanip>
using namespace std;
int a[11][11];
int main()
{
int i,j;
a[1][1]=1;
for(int i=2;i<=10;++i)
{
a[i][1]=1;a[i][i]=1;
for(int j=2;j<=i-1;++j)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(int i=1;i<=10;i++)
{
if(i!=10) cout<<setw(30-3*i)<<" ";
for(int j=1;j<=i;j++)
cout<<setw(6)<<a[i][j];
cout<<endl;
}
return 0;
}
相关文章推荐
- 「程序员思维训练」1. 读前声明
- MFC clist 学习设计
- 0109作业练习二维数组
- 机器学习与数据挖掘网上资源搜罗——良心推荐
- string字符串的大小和相加
- Design Pattern Memo 备忘录设计模式
- 【php】error_reporting
- JSP的学习(7)——九大隐式对象之pageContext对象
- Matlab多项式回归实现
- 解决在Azure 部署SharePoint2013 数据服务器拒绝连接和域连接出现的问题
- C++ DirectX 游戏开发初级视频教程 05 资源下载链接
- ssh服务
- Python中安装以及配置easy_install
- rubygem 国内镜像 解决gem install rails 连接超时的问题
- Fragment详解之五——Fragment间参数传递
- 机器学习(五):Logistic回归
- Struts2 基于XML校验的一些特点
- 使用包含自定义动作的隐式Intent
- 特征选择(四)-分散度
- Hibernate