zoukankan      html  css  js  c++  java
  • hdu 2512

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512

    思路:

    dp[i][j]表示第i张校园卡放到j本书中(保证每本书中必须至少有一张校园卡)的方案数,于是有dp[i][j]=j*dp[i-1][j]+dp[i-1][j-1](从i-1到i的状态可以在有j本书的情况下选择任意一本书放入校园卡,也可以放入放到新加进来的书中)这样的话最后只要FOR(i,1,n)sum+=dp[n][1]就可以啦(表示n张校园卡可以放入一本书或者2本书...或者n本书的情况总和)。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 #define MAXN 2020
     6 int dp[MAXN][MAXN];//dp[i][j]表示第i张校园卡放到j本书中(保证每本书中必须至少有一张校园卡)的方案数
     7 
     8 int main(){
     9     dp[1][1]=1,dp[2][1]=dp[2][2]=1;
    10     for(int i=2;i<MAXN;i++){
    11         for(int j=1;j<MAXN;j++){
    12             dp[i][j]=max(dp[i][j],j*dp[i-1][j]+dp[i-1][j-1]);
    13             dp[i][j]%=1000;
    14         }
    15     }
    16     int _case,n;
    17     scanf("%d",&_case);
    18     while(_case--){
    19         scanf("%d",&n);
    20         int ans=0;
    21         for(int i=1;i<=n;i++){
    22             ans+=dp[n][i];
    23         }
    24         printf("%d\n",ans%1000);
    25     }
    26     return 0;
    27 }
    28 
    29 
    30         
    View Code
  • 相关阅读:
    算法之递归
    初读 c# IL中间语言
    sql语句转为Model
    WPF-悬浮窗(类似于360)
    call,apply
    作用域题目
    css BFC
    数组扁平化 flatten
    常见的异步题
    setTimeout、Promise、Async/Await 的区别
  • 原文地址:https://www.cnblogs.com/wally/p/3085125.html
Copyright © 2011-2022 走看看