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

展示型的网站开发价格北京网站优化指导

展示型的网站开发价格,北京网站优化指导,php动态网站开发项目教程,Wordpress 防注入代码卡特兰数跟排列组合很有关系,所以在看此文章前请掌握: 加法原理乘法原理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.15wanjia.com/news/109.html

相关文章:

  • 联赛网站建设不足今日国内新闻头条
  • 做网站除了域名还用什么如何提高网站seo排名
  • 如果网站没有做icp备案会被处罚seo 360
  • 深圳市建设工程质量安全智能监管平台网站逆冬seo
  • 加强网站建设说明报告范文鹤壁网络推广哪家好
  • vb做网站玩seo网络推广经理
  • 福建百益建设集团有限公司网站商丘seo博客
  • 简易网站建设长沙关键词排名软件
  • 盐城做网站的哪个公司好湖南正规seo公司
  • 北京网页设计公司兴田德润团队seo是指什么意思
  • 做电影网站程序好用潍坊网站开发公司
  • 企业网站建设内容 程序开发谷歌怎么推广自己的网站
  • 做品牌形象网站短视频培训机构排名
  • 青岛网页设计培训机构seo网站推广费用
  • 网站建设包括的内容短视频推广
  • 全球外贸平台排名威海seo
  • 黑人与白人做爰网站抚顺seo
  • 电脑网站建设网站优化网站优化
  • 外贸建站 台州免费b站推广网站在线
  • 网站如何跟域名绑定网络营销课程总结
  • 国内免费云服务器推荐一键优化大师
  • 域名虚拟服务器做网站网站优化公司大家好
  • 企业网站的建设报价seo提升排名
  • 无法访问wordpress官网张掖seo
  • win7 iis搭建网站教程如何在百度发布信息推广
  • wordpress如何让设置关键词好的seo公司营销网
  • 教务在线网站开发报告书成都进入搜索热度前五
  • 个人网页设计作品赏析网站seo优化效果
  • 做网站需要那些编程语言广告联盟哪个比较好
  • 医疗网站建设计划书最佳bt磁力狗