一维数组的杨辉三角
#include<stdio.h>
int main()
{int n,i,j,a[100];scanf("%d",&n);for(i=0;i<n-1;i++)printf(" "); printf("1\n");//楊輝三角的第一行為肯定為1,不在規(guī)律的范圍; a[1]=a[2]=1;//第二行兩個也是為1,不會改變; for(i=0;i<n-2;i++)printf(" ");printf("%d %d\n",a[1],a[2]);for(i=3;i<=n;i++){a[1]=a[i]=1;//楊輝三角的第一個和最后一個元素都為1; for(j=i-1;j>1;j--){a[j]=a[j]+a[j-1];//把每一行的值給附了;
/*因?yàn)槭怯靡晃粩?shù)組來存儲的,每求出的一個數(shù)將覆蓋i-1行,對應(yīng)列存儲的值
就是說無法從上面一行推出下面一行,但是可以從下面一行推出上面一行,也就是
你想求的這個數(shù)是通過上面兩個相加得來的,但是是個一維的數(shù)組,只能表示一行
每做一行的運(yùn)算,上一行就會被覆蓋,后面的a[j]就是上一行的a[j],加上a[j-1]
正好就符合運(yùn)算規(guī)則,所以只能是倒推。*/ }for(int k=1;k<=n-i;k++){printf(" ");}for(j=1;j<=i;j++){printf("%d ",a[j]);}printf("\n");}return 0;
}
總結(jié)
- 上一篇: 堆的C语言实现——堆与堆排序(二)
- 下一篇: 看懂堆排序——堆与堆排序(三)