170423_巴斯卡三角形

#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
...
*/ 

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值