解题思路:
          a= 一元排列的方案 ;
          b=二元排列的方案;
         c=一元和二元一起排列的方案;
          解出 答案=a*b*c。

注意事项:
        二元的人数必须小于等于一元的人数,否则 无解

即 为0;
        二元和一元在一起排列的过程中,必须满足售票员 有零钱。
 


参考代码:

#include <stdio.h>
#define N 10
int main()
{
    int z,x,y,i,j,o;
    int pl(int x);
    while(scanf("%d%d%d",&z,&x,&y)!=EOF)
{
    int v[20][20]={0};
    if(y>x)
    {
        printf("0\n");  //如果2元的小孩人数大于1元小孩的人数,就没有满足题意的排队方案 即为0。
    }
    else
{
    v[1][0]=1;   //求1元小孩和2元小孩一起排列的方案。
    v[1][1]=1;
    for(i=2;i<=x;i++)
    {
        for(j=0;j<=i;j++)
        {
            for(o=0;o<=j;o++)
            {
                v[i][j]=v[i][j]+v[i-1][o];
            }
        }
    }
    printf("%d\n",v[x][y]*pl(x)*pl(y));   //求出满足题意的方案  即一起排列*单独排列
}
}
    return 0;
}
int pl(int x)   //分别求出1元小孩一起排列的方案和二元小孩一起排列的方案
{
   int i,e=1;
   for(i=1;i<=x;i++)
   {
       e=e*i;
   }
   return e;
}

点赞(3)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论