zoukankan      html  css  js  c++  java
  • hdu 1799 循环多少次?

    题目

    题意:给出n,m,其中m表示有几层循环,求循环的次数

    ①如果代码中出现
    for(i=1;i<=n;i++) OP ;

    那么做了n次OP运算;

    ②如果代码中出现

    fori=1;i<=n; i++)
      for(j=i+1;j<=n; j++) OP;

    那么做了n*(n-1)/2 次OP 操作

    如果有m层循环,那OP操作:n*(n-1)*(n-2)*.....(n-m+1)/m*(m-1)*...*1 ,即: n!/m!(n-m)! 发现是一个组合数:

    组合数通项公式:Cnm= n! / m!*(n-m)!;

    组合数递推公式:Cnm=Cnm−1+Cn−1m−1

    即用dp,递推关系为:C(n,m) = C(n-1,m-1) + C(n-1, m) ,其中 C(n,1)=n; C(n,n)=1; C(n,0)=1

    #include <cstdio>
    #include <iostream>
    using namespace std;
    #include <algorithm>
    const int MOD = 1007;
    
    int C[2010][2010];
    void solve()
    {
        C[0][0]=1;
        for(int i=1;i<=2000;i++){
            C[i][0]=1;
            for(int j=1;j<=2000;j++)
                C[i][j]=(C[i-1][j-1] + C[i-1][j])%MOD;
            }
    }
    
    int main()
    {
       int m,n;
       int T;
       solve();
       scanf("%d",&T);
       while(T--)
       {
           scanf("%d%d",&m,&n);
           printf("%d
    ",C[n][m]);
       }
        return 0;
    }
    
  • 相关阅读:
    SDK安装教程
    appscan下载
    app测试-兼容性测试与云测试技术
    app测试之耗电量测试
    App测试1-App测试概述
    app测试2--monkey稳定性测试
    app测试1--常用adb命令
    常用dos命令
    jmeter(二)脚本录制
    jmeter基础介绍
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160205.html
Copyright © 2011-2022 走看看