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

关于卡特兰数的详解请看

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;
}


点赞(15)
 

0.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

Aceks 6年前 回复TA

@Langzihao. 感觉wu师兄才是第一个AC的