caioj.cn 1036: 遞迴6(統計出棧)
題目描述
【題意】
1~n依次入棧,統計不同的出棧的方式
棧是常用的一種資料結構,有n令元素在棧頂端一側等待進棧,棧頂端另一側是出棧序列。你已經知道棧的操作有兩•種:push和pop,前者是將一個元素進棧,後者是將棧頂元素彈出。現在要使用這兩種操作,由一個操作序列可以得到一系列的輸出序列。請你程式設計求出對於給定的n,計算並輸出由運算元序列1,2,…,n,經過一系列操作可能得到的輸出序列總數。
【輸入格式】
一個整數n(1<=n<=15)
【輸出格式】
一個整數,即可能輸出序列的總數目。
【樣例輸入】
3
【樣例輸出】
5
直接變為卡特蘭數
#include<cstdio> #include<cstring> using namespace std; int n; long long a[2]; int main() { scanf("%d",&n); a[1]=1; for(int i=2;i<=n;i++) a[i&1]=a[i&1^1]*(4*i-2)/(i+1); printf("%lld\n",a[n&1]); return 0; }
相關推薦
caioj.cn 1036: 遞迴6(統計出棧)
題目描述 【題意】 1~n依次入棧,統計不同的出棧的方式 棧是常用的一種資料結構,有n令元素在棧頂端一側等待進棧,棧頂端另一側是出棧序列。你已經知道棧的操作有兩•種:push和pop,前者是將一個元素進棧,後者是將棧頂元素彈出。現在要使用這兩種操作,由一個操作序列可以得到一系列的輸出序列。請你程
演算法設計之補零遞迴法(統計數字問題)
問題:給定一個數N求從1到N的這N個數中0,1,2,3,4,5,6,7,8,9這10個數字出現的次數。注意,所有的數字沒有前導的0。 如6要寫成6,而不是 006 ,06這種形式 思路1:也就是最簡
javaSE (三十四)File類和遞迴練習(統計資料夾大小、拷貝資料夾、層級列印資料夾、斐波拉契數列、獲取1000階乘全部0和尾部0數目、約瑟夫環)
1、統計資料夾大小: 思路: 套用之前已經做過的,鍵入一個路徑,若有效則封裝成File類 初始化計數器len, 若資料夾下是檔案,則記錄檔案.length() 若資料夾下是資料夾,遞迴 輸出len 注:遞迴也可以刪除資料夾,但是一定要先刪除裡
簡單遞迴的(十進位制轉二進位制)
問題 D: 十->二進位制轉換 時間限制: 1 Sec 記憶體限制: 128 MB 提交: 231 解決: 75 [提交][狀態][討論版][命題人:外部匯入] 題目描述 將十進位制整數轉換成二進位
C/C++ 遞迴函式(漢諾塔)
題目描述 輸入漢諾塔問題中的盤子個數n,輸出將n個盤子從A移動到C的方法。 輸入 盤子個數n。 輸出 將n個盤子從A移動到C的方法。 樣例輸入 3 樣例輸出 A->C A->B C->B A->C B->A B->C
一道題看懂遞迴、(深度搜索)dfs、記憶化搜尋、動態規劃(DP)的差別!
有一個層數為n(n<=1000)的數字三角形。現有一隻螞蟻從頂層開始向下走,每走下一級,可向左下方向或右下方向走。求走到底層後它所經過數字的總和的最大值。 【輸入格式】 第一個整數為n,一下n行為各層的數字。 【輸出格式】 一個整數,即最大值。
漢諾塔遞迴呼叫(C語言實現)
1.遞迴演算法 遞迴演算法:是一種直接或者間接地呼叫自身的演算法。在計算機編寫程式中,遞迴演算法對解決一大類問題是十分有效的,它往往使演算法的描述簡潔而且易於理解。 遞迴過程一般通過函式或子過程來實現。 遞迴演算法的實質:是把問題轉化為規模縮小了的同類問題的子問題。然後
oracle11.2g遞迴查詢(樹形結構查詢)
轉自: 一 二 簡單語法介紹 一、樹型表結構: 節點ID 上級ID 節點名稱 二、公式: select 節點ID,節點名稱,level from 表 connect by prior 節點ID=上級節點ID start with 上級節點ID=
算法系列之遞迴函式(七位數字)
七對數字 今有兩個1,兩個2,兩個3,...兩個7,把它們排成一行。 要求,兩個1間有1個其它數字,兩個2間有2個其它數字,以此類推,兩個7之間有7個其它數字。如下就是一個符合要求的排列: 17126425374635 當然,如果把它倒過來,也是符合要求的。 請你找出另一種符合要求的
斐波那契數列遞迴與非遞迴實現(JAVA語言描述)
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34
二分查詢遞迴和非遞迴實現(c語言實現)
#include<stdio.h>++ int seeqSearch(int a[],int n,int k){ int i=n-1; for(;i>=0;i--){//遍歷陣列 if(a[i]==k){//找到對應的陣列
[caioj]1100: [視訊]線段樹2(統計不同顏色)
1100: [視訊]線段樹2(統計不同顏色) 題目描述 【題目描述】有L段線段(編號為1~L, (1 <= L <= 1000000)),一開始全部線段是顏色1。 有兩種操作: 1、
單向連結串列反轉,就地逆置與遞迴反轉(無表頭結點)
最近在看連結串列,今天刷到一道連結串列的反轉題,連結串列反轉可以說是基礎操作,但是可提供的方案也有很多,簡單通過了該題後又學習了一下遞迴反轉,現在把三種方法都公開出來做一個總結。 1.就地逆置 2.單引數的遞迴逆置 3.雙引數的遞迴逆置 一、就地逆置 方法:頭插。 由於這裡是不帶表頭結點的單向連結串列,所以頭
計算機圖形學常用演算法實現6 區域填充演算法-非遞迴形式(掃描線優化)
執行環境winform 這個演算法基本上是書上的思路,沒有很大的變動,感覺程式碼寫的很秀,很有水平。 不斷把所有待填充的區間新增到stack,然後一個個填充,效率比之前寫的都要高一些。 主要程式碼如下(多邊形的構建,map函式的初始化等需要自行新增): void ScanLineFill
二叉樹後序遍歷非遞迴實現(java)
後序遍歷:雙棧法,和層次遍歷(雙佇列)很相似,唯一區別在於層次遍歷用的 是佇列,後序遍歷用的是棧。 public static void posOrderUnRecur1(Node head){ System.out.print("PosOrder:"); if(head !=
Java實現斐波那契數列(遞迴、遍歷、矩陣)
什麼是斐波那契數列 其實很簡單,可以理解為: F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) 比如這樣一個數列:1、1、2、3、5、8、13、21、34、…… 有興趣可以看百度百科 下面我們就來實現,給定一個n,求f(n)的值
二叉樹,非遞迴實現(前序、中序、後序)
一、結合棧的方式實現,先讓右孩子入棧,再讓左孩子入棧。棧為空後,結束遍歷。 標頭檔案.根據具體的函式名自己建立,另外需要使用棧,引用棧的標頭檔案 stack.h # pragma oncee # include<stdio.h> # include<s
python 學習彙總36:遞迴函式(尾遞迴)( tcy)
遞迴函式(尾遞迴) 2018/11/15 用途: 遞迴函式常用於檢索大量資料,替代for迴圈。 1.遞迴深度設定: sys.getrecursionlimit() #返回
java:遞迴練習(斐波那契數列)
package com.heima.test; public class Test5 { public static void main(String[] args) { demo1(); System.out.println(fun(8)); } //使用陣列求斐波那契數列
caioj.cn 網路流入門6:牛選牛圈
1120: [視訊]網路流入門6:牛選牛圈 時間限制: 1 Sec 記憶體限制: 128 MB 提交: 72 解決: 26 [ 提交][ 狀態][ 討論版] 題目