nyoj164——卡特蘭數(待填坑)

題意:將1~2n個數按照順時針排列好,用一條線將兩個數字連接起來要求:線之間不能有交點,同一個點只允許被連一次。

最后問給出一個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)=C(2n,n)/(n+1) (n=0,1,2,...)
遞推關系的另類解為:??? h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)

一些方面的應用:

1. 括號化:矩陣連乘:P=a1×a2×a3×……×an,依據乘法結合律,不改變其順序,只用括號表示成對的乘積,試問有幾種括號化的方案?(h(n-1)種)
2.一個棧(無窮大)的進棧序列為1,2,3,…,n,有多少個不同的出棧序列?
3.給定n個點求能組成的二叉樹所有總數。
4. 凸多邊形三角劃分(任意兩頂點之間的連線必能相交),求有多少中分割的方法(類似:在圓上選擇2n個點,將這些點成對連接起來使得所得到的n條線段不相交的方法數)?
5. n層階梯切割為n個矩形的切割方法總數

代碼

#include<bits/stdc++.h>
using namespace std;
typedef long long  ll;
const int maxn = 1000000;
const int moder = 1000000;
int a[105][100];
void catalan()
//求卡特蘭數,a[i][j]存儲的是第i個逆序(高位在后)的卡特蘭數(從0開始),且未對高位0進行處理
{int i, j, len, carry, temp;a[1][0] = 1;len = 1;for(i = 2; i <= 100; i++){for(j = 0; j < len; j++) //乘法a[i][j] = a[i-1][j]*(4*(i-1)+2);carry = 0;for(j = 0; j < len; j++) //處理相乘結果
        {temp = a[i][j] + carry;a[i][j] = temp % 10;carry = temp / 10;}while(carry) //進位處理
        {a[i][len++] = carry % 10;carry /= 10;}carry = 0;for(j = len-1; j >= 0; j--) //除法
        {temp = carry*10 + a[i][j];a[i][j] = temp/(i+1);carry = temp%(i+1);}}
}
int main()
{int n;catalan() ;while(scanf("%d",&n) ,n != -1){int flag = 0 ;for(int i = 99;i >= 0;i--)//處理高位
        {if(a[n][i] != 0)flag = 1;if(flag)printf("%d",a[n][i]);}printf("\n");}return 0;
}

————不是很懂

轉載于:https://www.cnblogs.com/cunyusup/p/8587028.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250783.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250783.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250783.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

git 使用

1. 先進入項目文件夾&#xff0c;通過命令 git init 把這個目錄變成git可以管理的倉庫 git init 2. 把文件添加到版本庫中&#xff0c;使用命令 git add .添加到暫存區里面去&#xff0c;不要忘記后面的小數點“.”&#xff0c;意為添加文件夾下的所有文件 git add . 3. 用命令…

webpack --- 使用vue

// webpack中如何使用 vue: // 1. 安裝vue 的包: cnpm i vue -S // 2. 由于在 webpack 中,推薦使用 . vue 這個組件模板文件定義組件, 所以需要安裝能解析這種文件的loader cnpm i vue-loader vue-template-compiler -D // 3. 在main.js 中導入 vue的包, import Vue from vue…

ES6雜碎

1、let聲明的變量沒有變量提升&#xff1b; 2、const聲明的變量&#xff1a;塊級作用域內有效&#xff0c;存在暫時性死區&#xff0c;變量指向的那個內存地址不得改動&#xff1b; 3、...tail解構出來的是數組或空數組 let [head, ...tail] [1, 2, 3, 4]; head //1 tail //[2…

koa --- 自制簡易的koa-router

打算自己寫一個簡單的Router類,來實現koa-router這個中間件的(部分)神奇功能 確定需求 1.首先導入需要在app.js里面導入自己寫的Router類 2.然后是使用的方式和掛載router的方式 // 導入Router類 const Router require(./components/router.js);// 使用方式,(暫時只對get請…

MariaDB 腳本

研究MariaDB&#xff0c; 需要mock up一些假數據&#xff1a; 生成n個長度整型數的函數rand_num&#xff1a; CREATE DEFINERrootlocalhost FUNCTION rand_num(n INT) RETURNS int(5) begin DECLARE i INT DEFAULT 0; DECLARE result INT DEFAULT 0; WHILE i < n DOSET re…

Promise的基本使用

利用Promise是解決JS異步執行時候回調函數嵌套回調函數的問題&#xff0c; 更簡潔地控制函數執行流程&#xff1b; 通過new實例化Promise&#xff0c; 構造函數需要兩個參數&#xff0c; 第一個參數為函數執行成功以后執行的函數resolve&#xff0c; 第二個函數為函數執行失敗…

軟工作業PSP與單元測試訓練

一、實現模塊判斷傳入的身份證號碼的正確性&#xff1b; 二、針對所實現的模塊編寫對應的單元測試代碼&#xff1b; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.u…

koa --- nunjucks

安裝: npm install koa-nunjucks-2 --save目錄結構 |--- controller/ | |--- home.js |--- service/ | |--- home.js |--- views/ |--- app.js |--- router.jsapp.js // (部分) const nunjucks require(koa-nunjucks-2); app.use(nunjucks({ext: html,path: path.joi…

DNN模型訓練詞向量原理

轉自&#xff1a;https://blog.csdn.net/fendouaini/article/details/79821852 1 詞向量 在NLP里&#xff0c;最細的粒度是詞語&#xff0c;由詞語再組成句子&#xff0c;段落&#xff0c;文章。所以處理NLP問題時&#xff0c;怎么合理的表示詞語就成了NLP領域中最先需要解決的…

天平稱重【遞歸解法】

用天平稱重時&#xff0c;我們希望用盡可能少的砝碼組合稱出盡可能多的重量。如果只有5個砝碼&#xff0c;重量分別是1&#xff0c;3&#xff0c;9&#xff0c;27&#xff0c;81則它們可以組合稱出1到121之間任意整數重量&#xff08;砝碼允許放在左右兩個盤中&#xff09;。 本…

算法 --- reduce的使用.

描述: 難點: 將[[‘a’,‘b’,‘c’],[‘d’,‘e’,‘f’]]輸出為[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]. 關鍵代碼描述: 1.假設我們已經根據輸入的數字得到了 rawArr [[‘a’,‘b’,‘c’],[‘d’,‘e’,‘f’]] 2. 下一步將rawArr[0…

SpringBoot、mysql配置PageHelper插件

一&#xff1a;https://blog.csdn.net/h985161183/article/details/79800737 主要異常&#xff1a;org.springframework.beans.factory.BeanCreationException: Error creating bean with name com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration: pageHelper.…

字符串的拆分以及分隔符所在不同位置的刪除

try { //根據imComuserGroupMng獲取這個數據庫的所有ImComuserGroup數據 List<ImComuserGroup> list imComuserGroupMng.findAllComuserGroup(); //便利實體數據list為數據的集合 …

算法 --- 遞歸生成括號

問題描述 思路: 1.首先生成n個括號 2.左括號數量(記為l)不超過n 3.右括號數量(記為r)不超過n,且優先生成左括號(即 l < r) 4.需要設計一個遞歸式h(str,l,r) // 一開始,str , l 0, r 0 // 第一步進去,添加左括號, str(, l 1, r 0 // 然后因為 l < n . r < l 所以…

使用 TypeScript 改造構建工具及測試用例

最近的一段時間一直在搞TypeScript&#xff0c;一個巨硬出品、賦予JavaScript語言靜態類型和編譯的語言。 第一個完全使用TypeScript重構的純Node.js項目已經上線并穩定運行了。 第二個前后端的項目目前也在重構中&#xff0c;關于前端基于webpack的TypeScript套路之前也有提到…

JavaScript 驗證表單不為空和獲取select下拉列表的值和文本

1.驗證表單不為空 var hasform { "Name": "名字", "Id_card": "身份證", "PaySalary": "月工資", "CardCode": "賬號", "Fk_Subjectf_Code": &quo…

javascript --- 變量污染全局作用域問題解決方案

日常寫法 // 假設你寫了幾個關于某個某塊的函數 function foo1 () {...} function foo2 () {...} function foo3 () {...}出現問題:假設你的團隊中也有一個人定義了foo1函數,那么你寫的將會覆蓋以前的函數,或者會被覆蓋掉.若前面使用let聲明了foo1變量.將會報錯. 解決污染 你…

solr7.4 安裝與使用

1.solr7環境要求 solr7需要java8環境&#xff0c;且需要在環境變量中添加 JAVA_HOME變量。 2.solr 安裝 下載地址 https://lucene.apache.org/solr/mirrors-solr-latest-redir.html 我下載為7.4版本 在solr5以前solr的啟動都有tomcat作為容器&#xff0c;但是從solr5以后solr內…

初入HTML5

在最開始接觸HTML5的時候&#xff0c;你會遇到的大多是一些常見常用的屬性以及屬性值。它們分類廣、品種雜且使用率高。到css各種樣式的時候&#xff0c;你會接觸到更多的東西&#xff0c;各種屬性、選擇器、盒子模型都是重點。那么&#xff0c;現在我們就看一下它們到底是什么…

javascript --- 讓函數的實例可以鏈式調用

關鍵: 在每個函數的末尾加上 return thisthis:在javascript中表示當前的對象 栗如: 有以下函數 var fooObj {foo1: function() {console.log(1);},foo2: function() {console.log(2);},foo3: function() {console.log(3);} }// 你想通過 fooObj.foo1().foo2().foo3() // …