zoukankan      html  css  js  c++  java
  • hdu 1521 排列组合 —— 指数型生成函数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1521

    标准的指数型生成函数;

    WA了好几遍,原来是多组数据啊囧;

    注意精度,直接强制转换(int)是舍去小数,会WA,+0.5再强制转换或输出 %.0lf 是四舍五入,能A。

    代码如下:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef double db;
    int const xn=15;
    int n,m,jc[xn],s[xn];
    db f[xn],g[xn];
    void init()
    {
      jc[0]=1;
      for(int i=1;i<=10;i++)jc[i]=jc[i-1]*i;
    }
    int main()
    {
      init();
      while(~scanf("%d%d",&n,&m))
        {
          for(int i=0;i<=m;i++)f[i]=g[i]=0;//
          for(int i=1;i<=n;i++)scanf("%d",&s[i]);
          for(int i=0;i<=s[1];i++)f[i]=1.0/jc[i];
          for(int i=2;i<=n;i++)
        {
          for(int j=0;j<=m;j++)
            for(int k=0;k<=s[i]&&j+k<=m;k++)
              g[j+k]+=f[j]/jc[k];
          for(int j=0;j<=m;j++)f[j]=g[j],g[j]=0;
        }
          printf("%.0lf
    ",f[m]*jc[m]);
        }
      return 0;
    }
  • 相关阅读:
    数据库连接池
    一致性hash
    java 集合大家族
    linkedlist
    HashMap
    hashcode
    Job 逻辑执行图
    CDN
    网站缓存
    Mysql临时文件目录控制
  • 原文地址:https://www.cnblogs.com/Zinn/p/10055924.html
Copyright © 2011-2022 走看看