杭林生


私信TA

用户名:171530415

访问量:2799

签 名:

等  级
排  名 22123
经  验 619
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 平顶山学院
专  业

  自我简介:

解题思路:
          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;
}

 

0.0分

3 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区