【问题描述】打印杨辉三角形的前10行。
杨辉三角形如下图1所示:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
图1
问题解析:
直接找不容易找出规律,但是我们可以这样考虑,将图1转换为如下的图2形式,也就可以看出杨辉三角形也就是二维数组的一个三角区域。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
图2
假设通过二维数组a来存储,i表示行,j表示列。我们可以看出每个数据之间有如下的规律:
1)每一行的元素个数与行数相同;
2)每一行的第一个元素和最后一个元素都是1;
3)中间的元素a[i][j]= a[i-1][j-1]+a[i-1][j];
4)最后要打印杨辉三角形的样式只需要控制好每行第一个元素的位置即可。
完整代码参考:
#include
#include
using namespace std;
int main(){
inta[11][11] = {};
a[1][1] =1;
for(int i= 2;i <= 10;i++){ ="">=>
//将行首和行尾元素均赋值为1
a[i][1]= 1;
a[i][i]= 1;
//计算中间的元素
for(intj = 2;j <=>=>
a[i][j]= a[i-1][j-1] + a[i-1][j];
}
}
//控制输出的空格输出杨辉三角形
for(int i= 1;i <=>=>
if(i!=10){
cout< setw((10-i)*3)="">< '="">
}
for(intj = 1;j <=>=>
cout< setw(6)=""><>
}
cout< endl;="">
}
return 0;
}
注:
1、setw(int n)只是对直接跟在<><>
2、n是在输出时分配了n个字符的输出宽度,然后默认的是在n个字符宽度中右对齐输出;
3、需要包含头文件
联系客服