zoukankan      html  css  js  c++  java
  • HDU 1521 指数型母函数

    方法一: DFS

    方法二:生成函数

    每个数可以重复一定次数,求排列组合数,这是裸的指数型生成函数;

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 double c1[15],c2[15];
     6 int a[15];
     7 int num[15];
     8 
     9 
    10 int main() {
    11 
    12     a[0] = 1;
    13     for(int i=1; i<13; i++)
    14         a[i] = a[i-1]*i;
    15 
    16     int n,m;
    17     while(scanf("%d%d",&n,&m)!=EOF) {
    18 
    19         memset(c1,0,sizeof(c1));
    20         memset(c2,0,sizeof(c2));
    21         
    22         for(int i=1; i<=n; i++)
    23             scanf("%d",&num[i]);
    24 
    25         for(int i=0; i<=num[1]; i++)
    26             c1[i] = 1.0/a[i];
    27 
    28         for(int i=2; i<=n; i++) {
    29 
    30             for(int j=0; j<=m; j++) {
    31 
    32                 for(int k=0; k<=num[i]&&j+k<=m; k++)
    33                     c2[j+k] +=c1[j]/a[k];
    34             }
    35             memcpy(c1,c2,sizeof(c2));
    36             memset(c2,0,sizeof(c2));
    37         }
    38 
    39         printf("%.0lf
    ",c1[m]*a[m]);
    40 
    41     }
    42 
    43     return 0;
    44 }
    View Code
  • 相关阅读:
    费马小定理
    CF 1365D Solve The Maze
    CF 1367D Task On The Board
    CF 1368B Codeforces Subsequences
    CF 1368C Even Picture
    mybatis框架
    Ajax
    jdbc
    jQuery
    JSP
  • 原文地址:https://www.cnblogs.com/TreeDream/p/6915362.html
Copyright © 2011-2022 走看看