#include<stdio.h>
#define N 5//总共6行
long combi(int row, int location){
long position_value=1;
for(int i=1;i<=location;i++){
position_value=position_value*(row-i+1)/i;//这里的规律是排列
}
return position_value;
}
//row->代表行,从第0行开始;
//location->代表一行中的各个位置;
//position_value->代表相应位置的值
void paint(){
for(int row=0;row<=N;row++){
for(int location=0;location<=row;location++){
//排版设定开始——N行N列的矩阵(每行都有N+1个*)
if(location==0){
for(int i=1;i<=(N-row+1);i++){
printf("*");//打印N-row+1个*
}
}
else{
printf("*");//打印row个*
}//排版设定结束
printf("%d",combi(row,location));//打印相应数值
}
printf("\n");
}
}
int main(){
paint();
return 0;
}
/*
这里找到的规律非常巧妙,每一行其实都是一个排列问题,排列我用符号A(row,^location)表示,row>=location。
第0行:A(0,^0)=1
第1行:A(1,^0)=1 A(1,^1)=1
第2行:A(2,^0)=1 A(2,^1)=2 A(2,^2)=1
第3行:A(3,^0)=1 A(3,^1)=3 A(3,^2)=3 A(3,^3)=1
...
*/
170423_巴斯卡三角形
最新推荐文章于 2023-10-09 02:31:42 发布