编程实现这个图片显示:
假如知道这个是一个著名的算法,那么可能编程很简单,把算法转化一下就ok了。
但是假如不知道,应该怎么入手,首先要把这个图形转化为一个2为数组的形式,如下图:
很容易得出一个计算的方法:
第一位,最后一位都是1
前两行固定好了。
新行开始一位都是1.
第二位怎么是0。
第三位一直到中间行(包括)都是上一行的前一位和后一位相加得到。
中间行以后正好一一对应,既可以。
N表示,要显示多少行
那么数组就是n*2+1这么多行数。
int k = 0;//0----------M
int i, j;
int a = 1;
for(i = 0; i <= M; i++){
for(j = (M - k); j <= (M + k); j ++){
if(a == 1){
num[i][j]= 1;
}else if(a == 2){
num[i][j]= 0;
}else{
if(j < N -1){
num[i][j] = num[i - 1][j - 1] + num[i -1][j + 1];
}else{
num[i][j]= 1;
}
}
a++;
}
a= 1;
k++;
}
图形和代码分析:
M表示第一行的显示位,或者说是中间列的位置。
第一个循环是0-----------------M一共m+1行。
第二个循环从0-----------------M一共m+1列。
每行第一列为1,第二列为0.第三列为上一行的前一列,+上一行的后一列。
需要注意的是M行的最后一列,他没有上一行的后一列,那么他就直接=1.
求巴斯卡三角形 的倒三角如何做?
只需要把正巴斯卡三角的输出修改一下即可。