zoukankan      html  css  js  c++  java
  • hdu_2519新生晚会(DP)

    新生晚会

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 6751    Accepted Submission(s): 2388


    Problem Description
    开学了,杭电又迎来了好多新生。ACMer想为新生准备一个节目。来报名要表演节目的人很多,多达N个,但是只需要从这N个人中选M个就够了,一共有多少种选择方法?
     
    Input
    数据的第一行包括一个正整数T,接下来有T组数据,每组数据占一行。
    每组数据包含两个整数N(来报名的人数,1<=N<=30),M(节目需要的人数0<=M<=30)
     
    Output
    每组数据输出一个整数,每个输出占一行
     
    Sample Input
    5 3 2 5 3 4 4 3 6 8 0
     
    Sample Output
    3 10 1 0 1
     
    Source

    题目一看就想到了C(a,b) = C(a - 1,b) +C(a - 1,b - 1)
    一个数学问题。。。。。
    之后想到DP解决。。。。。
    上代码
    先用数学方法解决下......
    # include<iostream>
    # include<cstdio>
    using namespace std;
    int main()
    {
        int t,n,m,i;
        double sum;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&n,&m);
            if(n<m)
            { printf("0
    ");
            continue;
            }
            sum=1;
            for(i=1;i<=m;i++)
                sum*=(n+1-i)/(double)i;//关键
            printf("%.0f
    ",sum);
        }
        return 0;
    }
    
    
    
    
    
    
    来个DP
    #include <iostream>
    using namespace std;
    int pailie[31][31];
    int main()
    {
        int T;
        cin>>T;
        for (int i=0; i<T; i++)
        {
            int N,M;
            cin>>N>>M;
            if(N<M)
                cout<<0<<endl;
            else
            {
                if(M>N/2)
                    M=N-M;
                for (int j=0; j<31; j++)
                {
                    pailie[j][0]=1;
                }
                pailie[0][1]=0;
                for (j=1; j<=N; j++)
                {
                    for (int k=0; k<=j; k++)
                    {
                        pailie[j][k]=pailie[j-1][k]+pailie[j-1][k-1];
                    }
                }
                cout<<pailie[N][M]<<endl;
            }
        }
    }
    View Code
    
    
    
  • 相关阅读:
    选项菜单-OptionMenu
    Android Studio教程
    android 使用layer-list
    JavaScript OOP 学习总结
    Android应用中网络请求库Volley的使用
    Android应用中网络请求库Volley的介绍
    Android UI: LinearLayout中layout_weight 属性的使用规则
    Robot Framework 培训
    Begin :SWIFT 基本语法
    树莓派raspberrypi系统安装docker以及编译nginx和php镜像
  • 原文地址:https://www.cnblogs.com/sxmcACM/p/3346282.html
Copyright © 2011-2022 走看看