数学/sgu 130 Circle
生活随笔
收集整理的這篇文章主要介紹了
数学/sgu 130 Circle
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意
一個圓上有2k點,請輸出點于點之間連線使得所分區域塊數最小的方案總數以及區域數
分析
2k個點最少能把平面分成k+1的區域,易證;
至于方案數,利用遞推和乘法原理
令f[i]表示2i個點時的方案數,f[0]=f[1]=1,則f[i]=sigma(f[j]*f[i-j-1],0<j<i)
具體參見百度百科:卡特蘭數列
Accepted Code
1 /* 2 PROBLEM:sgu130 3 AUTHER:Rinyo 4 MEMO:數學 5 */ 6 #include<cstdio> 7 long long f[40]; 8 int main() 9 { 10 int n; 11 scanf("%d",&n); 12 f[0]=f[1]=1; 13 for (int i=2;i<=n;i++) 14 for (int j=0;j<i;j++) 15 f[i]+=f[j]*f[i-j-1]; 16 printf("%I64d %d\n",f[n],n+1); 17 return 0; 18 }?
轉載于:https://www.cnblogs.com/Rinyo/archive/2013/03/21/2974357.html
總結
以上是生活随笔為你收集整理的数学/sgu 130 Circle的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 7安装DB2
- 下一篇: 理解Go Interface