当前位置: 首页 > news >正文

常见算法-巴斯卡三角形(Pascal)

常见算法-巴斯卡三角形(Pascal)

1、说明

巴斯卡(Pascal)三角形基本上就是在解 nCr,因为三角形上的每一个数字各对应一个nCr,其中 n 为 row,而 r 为 column,如下:

    0C0

   1C0 1C1

  2C0 2C1 2C2

 3C0 3C1 3C2 3C3

对应的数据如下图所示:

                 1

    1       1

   1       2      1

  1      3       3     1

巴斯卡三角形中的 nCr 可以使用以下这个公式来计算,以避免阶乘运算时的数值溢位:

        nCr = [(n-r+1)/r] * nCr-1

        nC0 = 1

2、C++代码

#include<iostream>
using namespace std;long Pascal(int n, int r) {long p = 1;for (int i = 1; i <= r; i++) {p = p * (n - i + 1) / i;}return p;
}void PrintPascal(int t) {int n, r;for (n = 0; n <= t; n++) {for (r = 0; r <= n; r++) {int i;if (r == 0) {for (i = 0; i <= (t - n); i++) {cout << "  ";}}else {cout << "  ";}cout << Pascal(n, r);}cout << endl;}
}int main() {PrintPascal(12);// n=0, r=0		"   ""   ""   ""   "" 1 "					||	"   ""   ""   ""   ""0c0"// n=1, r=0		"   ""   ""   "" 1 ""   "" 1 "				||	"   ""   ""   ""1c0""   ""1c1"//		r=1// n=2, r=0		"   ""   "" 1 ""   "" 2 ""   "" 1 "			||	"   ""   ""2c0""   ""2c1""   ""2c2"//		r=1//		r=2// n=3, r=0		"   "" 1 ""   "" 3 ""   "" 3 ""   "" 1 "	||	"   ""3c0""   ""3c1""   ""3c2""   ""3c3"//		r=1//		r=2//		r=3return 0;
}

http://www.lryc.cn/news/186520.html

相关文章:

  • AI:09-基于深度学习的图像场景分类
  • uni-app:引入echarts(使用renderjs)
  • 使用wireshark解析ipsec esp包
  • linux如何删除最近操作的日志
  • android端MifareClassicTool
  • 设计模式 - 迭代器模式
  • Docker之Dockerfile搭建lnmp
  • 排序算法——选择排序
  • 【数据结构C/C++】双向链表的增删改查
  • Godot 添加Nuget 引用
  • IC工程师职场必备《经典Verilog100多个代码案例》(附下载)
  • springboot项目做成公共项目
  • RTC 时间、闹钟
  • 【yolo系列:yolov7训练添加spd-conv】
  • 面向对象设计-UML六种箭头含义
  • 一本没有任何数学公式的自然语言处理入门书
  • 【数据结构C/C++】多维数组的原理、访问方式以及作用
  • 2023年中国烹饪机器人市场发展概况分析:整体规模较小,市场仍处于培育期[图]
  • Android原生实现控件选择背景变色方案(API28及以上)
  • 为什么要学C语言及C语言存在的意义
  • 数据结构——空间复杂度
  • uniapp:swiper-demo效果
  • Graphviz 作图工具
  • vue、vuex状态管理、vuex的核心概念state状态
  • 【QT】Qt Application Manager启动应用源码分析
  • MyBatisPlus(十)判空查询
  • AIGC(生成式AI)试用 8 -- 曾经的难题
  • 文化主题公园旅游景点3d全景VR交互体验加深了他们对历史文化的认知和印象
  • 京东数据分析平台:2023年8月京东奶粉行业品牌销售排行榜
  • Java 21:虚拟线程介绍