Codevs 3134 Circle
生活随笔
收集整理的這篇文章主要介紹了
Codevs 3134 Circle
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
3134 Circle
題目描述?Description在一個圓上,有2*K個不同的結(jié)點,我們以這些點為端點,連K條線段,使得每個結(jié)點都恰好用一次。在滿足這些線段將圓分成最少部分的前提下,請計算有多少種連線的方法
輸入描述?Input Description僅一行,一個整數(shù)K(1<=K<=30)
輸出描述?Output Description兩個用空格隔開的數(shù),后者為最少將圓分成幾塊,前者為在此前提下連線的方案數(shù)
樣例輸入?Sample Input2
樣例輸出?Sample Output2 3
對于圓上任意一點a,能和任意點連接將圓分成兩半 ,前提是圓兩邊的點數(shù) 都是偶數(shù),那么將圓分成的兩邊以相同的方法分,可知是卡特蘭數(shù)?
提供兩種求Catalan數(shù)的方法
#include<iostream> #include<cstdio> using namespace std; #define ll long long ll n,f[30]; ll fs(ll x){if(x==0)return 1;if(x==1)return 1;if(x==2)return 2;if(f[x])return f[x];ll sum=0;for(ll i=0;i<=x-1;i++){sum+=fs(i)*fs(x-i-1);}f[x]=sum;return f[x]; } int main(){scanf("%lld",&n);printf("%lld %d",fs(n),n+1); } 遞歸 #include<iostream> #include<cstdio> using namespace std; #define ll long long ll f[40]; int main(){int n;scanf("%d",&n);f[0]=1;for(int i=1;i<=n;i++)f[i]=f[i-1]*(4*i-2)/(i+1);printf("%lld %d",f[n],n+1); } 遞推?
轉(zhuǎn)載于:https://www.cnblogs.com/thmyl/p/7076894.html
總結(jié)
以上是生活随笔為你收集整理的Codevs 3134 Circle的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue2.0 之文本渲染-v-html、
- 下一篇: centos7 搭建vsftpd服务并锁