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

shopex官方网站论坛前端如何兼职做网站

shopex官方网站论坛,前端如何兼职做网站,小程序注册申请多少钱,seo内部优化具体做什么卡特兰数跟排列组合很有关系,所以在看此文章前请掌握: 加法原理乘法原理A(m,n)计算公式及其原理C(m,n)计算公式及其原理 前言 今天您将会学习到基本的卡特兰数及其应用。 一、卡特兰数是什么? 卡特兰数(Catalan number&#xff0…

卡特兰数跟排列组合很有关系,所以在看此文章前请掌握:

  • 加法原理
  • 乘法原理
  • A(m,n)计算公式及其原理
  • C(m,n)计算公式及其原理

前言

今天您将会学习到基本的卡特兰数及其应用。


一、卡特兰数是什么?

        卡特兰数(Catalan number)是组合数学中一种常出现于各种计数问题中的数列。其前几项为:1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...        

二、卡特兰数如何计算

设h(n)为catalan数的第n项,令h(0)=1,h(1)=1,catalan数满足递推式:

h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n≥2)

例如:h(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2

        h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5

另类递推式:

h(n)=h(n-1)*(4*n-2)/(n+1)h(n+1)=h(n) * (4*n + 2) / (n + 2)

递推关系的解为:

h(n)=C(2n,n)/(n+1) (n=0,1,2,...)

递推关系的另类解为:

h(n)=C(2n,n) - C(2n,n-1) (n=0,1,2,...)

三、卡特兰的实际应用

1.思路分析

您可以先看这一题。

现在我们来思考这道题:

首先,我们设 f(n)=序列个数为n的出栈序列种数。(我们假定,最后出栈的元素为k,显然,k取不同值时的情况是相互独立的,也就是求出每种k最后出栈的情况数后可用加法原理,由于k最后出栈,因此,在k入栈之前,比k小的值均出栈,此处情况有f(k-1)种,而之后比k大的值入栈,且都在k之前出栈,因此有f(n-k)种方式,由于比k小和比k大的值入栈出栈情况是相互独立的,此处可用乘法原则,f(n-k)*f(k-1)种,求和便是Catalan递归式。)

首次出空之前第一个出栈的序数k将1~n的序列分成两个序列,其中一个是1~k-1,序列个数为k-1,另外一个是k+1~n,序列个数是n-k。

此时,我们若把k视为确定一个序数,那么根据乘法原理,f(n)的问题就等价于——序列个数为k-1的出栈序列种数乘以序列个数为n - k的出栈序列种数,即选择k这个序数的 f(n) =f(k-1) × f(n-k)。而k可以选1到n,所以再根据加法原理,将k取不同值的序列种数相加,得到的总序列种数为:f(n) = f(0)f(n-1) + f(1)f(n-2) + …… + f(n-1)f(0)。

2.我的打表代码
#include<bits/stdc++.h>
using namespace std;
long long a[18]={1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700};
int main(){int x;cin>>x;cout<<a[x-1]<<endl;return 0;
}

四、AI说的话

1.AI对卡特兰数的评价

卡特兰数是一种非常重要的组合数学概念,它在许多领域都有广泛应用。下面是对卡特兰数的一些评价:

1. 卡特兰数可以表示组合问题和路径计数问题。

2. 卡特兰数的计算方法简单明了,可通过递推公式或生成函数求解。

3. 卡特兰数的性质丰富,涉及到二叉树、括号序列、山峰序列等多种组合结构。

4. 卡特兰数常被用于解决实际问题,如括号匹配、高维几何计算等。

5. 卡特兰数还具有一些意想不到的应用,如计算有限自动机、判断合法的棋盘布局等。

总之,卡特兰数作为组合数学中的重要概念,不仅具有理论意义,更有着实际应用价值。

2.AI解释卡特兰数的应用

卡特兰数是一类非常重要的数列,因为它们可以用于解决许多实际应用问题。以下是卡特兰数的一些应用:

  1. 括号序列:一个括号序列是由左右括号组成的字符串,例如 (()())。卡特兰数可以用于计算长度为n的括号序列的数量,以及其中合法的括号序列的数量。

  2. 凸多边形三角剖分:在凸多边形中,任何三角形的划分都可以由其对角线进行。卡特兰数可以用于计算划分凸多边形所需的对角线数量。

  3. 二叉树:卡特兰数也可以用于计算由n个节点构成的二叉树的数量。这里,每个节点不仅包含一个值,而且还包含指向其左子节点和右子节点的指针。

  4. 杨表:卡特兰数也可以用于计算n个数的杨表的数量,其中杨表是一种将n个数排列成不降序列的方案。

  5. 格路线:在一个n×n的网格上,从左下角到右上角的路径必须从每个格子的下方或右方穿过。卡特兰数可以用于计算这样的路径的数量。

  6. 栈的操作序列:假设我们有一个空栈,我们可以将n个数字插入该栈。卡特兰数可以用于计算所有n个数字的操作序列的数量,其中每个操作可以是“压入”或“弹出”。

  7. 电力分配:假设我们有n台发电机和n个城市,每台发电机都可以向多个城市提供电力。卡特兰数可以用于计算所有可能的电力分配方案。

总之,卡特兰数在组合数学中起着非常重要的作用,它们的应用广泛,不仅仅限于上述问题。

3.AI生成的卡特兰数C++代码

以下是使用C++语言生成卡特兰数的示例代码:

#include <iostream>
using namespace std;unsigned long int catalanDP(unsigned int n)
{// Table to store precomputed values of catalan numbersunsigned long int catalan[n + 1];// Initialize first two values in tablecatalan[0] = catalan[1] = 1;// Fill entries in catalan[] using DPfor (int i = 2; i <= n; i++){catalan[i] = 0;for (int j = 0; j < i; j++)catalan[i] += catalan[j] * catalan[i - j - 1];}// Return last entryreturn catalan[n];
}int main()
{for (int i = 0; i < 10; i++)cout << catalanDP(i) << " ";return 0;
}

此示例代码使用动态规划方法来计算卡特兰数,并使用循环生成前10个卡特兰数。


总结

以上就是今天要讲的内容。

http://www.yayakq.cn/news/237968/

相关文章:

  • 帮客户做网站挣钱吗网页设计师培训班招生
  • 网站推广短信广州网站制作公司联系方式
  • 浏览器打开用dw做的网站说微信小程序会员管理系统怎么做
  • 网站素材模板只做汽车的网站
  • 酒业网站模板下载东营网站制作公司
  • 做百度企业网站有什么好处校园网站建设报价
  • 品牌网站建设c重庆门户网站界面设计模板下载
  • 现在如何给网站做外链国际工程承包
  • 网展企业网站系统 免费wordpress手机版设置
  • ftontpage如何做网站宜州做网站
  • 常州网站建设乛薇门户网站申请
  • 网站推广软件免费观看品牌建设经费指哪些
  • 一个空间可以绑定几个网站网站内容转载
  • 怎么删掉安装的wordpressseo引擎优化教程
  • 博物馆网站建设经验长沙有什么互联网公司
  • 用ps做美食网站wordpress 照片墙插件
  • 怎么免费搭建网站文本编辑器做网站
  • 企业网站建设应该做的网站电脑上跟手机上不一样吗
  • 行政审批网站建设规范企业建站多站点管理系统
  • 全国酒店网站建设友情链接检索数据分析
  • 企业网站申请流程网站改版影响排名吗
  • 网站可以用中国二字做抬头吗天津河东做网站
  • cms建站流程室内设计资源网
  • python 做网站模块网站正在建设中动画
  • 手机访问pc网站跳转营销网站建设哪家便宜
  • 做网站用模板wordpress 联系表单
  • 济南软件优化网站站长工具使用
  • 网站建设ppt课件陕西省建设工程信息网官网
  • 桐庐营销型网站建设wordpress谷歌广告代码
  • 网站开发保障合同网站开发技术协议怎么写