解题思路:
本题是卡特兰数的应用。

关于卡特兰数的详解请看

http://baike.baidu.com/link?url=cRGLxxq1hlttRx_x0bKMZ9QuwscNQI2g2b-z62_Nenoys8h8In58jC_W4rAaKdKk2HyTVXYqTCtL0XsXeQvqPOsqiNqU7PPFsJZBqtR3jOugct-DEYeZY2kah6NO-VPxWgISmpDMegJUP0i84gwXCte9x91EUQAU1v4lgGkugi0n9mpp3ecn4yY3DHtn8DVo

参考代码:

#include<stdio.h>
int main(){
    int M,N,K,sum[11]={0},cell[]={1,1,2,6,24,120,720,5040,40320,362880,3628800},a=1,b=1;
    int ans,i;
    scanf("%d%d%d",&M,&N,&K); //4 2 2
    for(i=0;i<=M;i++){   //i<=4
        sum[i]=a/b;  //sum[0]=1 sum[1]=4 sum[2]=6 sum[3]=4 sum4=1
        a*=(M-i);   //a0=4  a1=12 a2=24 a3=24
        b*=(i+1);     //b0=1 b1=2 b2=6 b3=24
    }
    ans = (sum[N]-sum[K-1])*cell[N]*cell[K];//sum[N]-sum[k-1]为所求个数,后面为全排列个数
    printf("%d\n",ans>0?ans:0);
    return 0;
}


 

0.0分

1 人评分

C语言网提供「C语言、C++、算法竞赛」在线课程,全部由资深研发工程师或ACM金牌大佬亲授课,更科学、全面的课程体系,以在线视频+在线评测的学习模式学习,学练同步,拒绝理论派,真正学会编程!还有奖学金等增值福利等你!

  评论区

输入 1 1 0是怎么搞?
2019-02-15 13:48:20 | |
我终于成为继小方之后第二个AC这个题的人
2017-09-27 20:20:55 | |
  • «
  • 1
  • »