HDU ACM 1292 "下沙野骆驼"ACM夏令营->DP

来源:互联网 发布:javascript项目实战 编辑:程序博客网 时间:2024/06/05 23:25

解析:一支队伍分组的情况,如果这支队伍有n个人,就有n种情况分别是一个组,两个组,。。。。。。;
i个人分成j组有两种方式:

1、i-1个人分成j-1组之后,第i个人独立分成一组;DP[i][j]=DP[i-1][j-1]。

2、i-1个人分成j组,第i个人随便加入j组中的任何一组;DP[i][j]=DP[i-1][j]*j。

3、因此状态转移方程为DP[i][j]=DP[i-1][j-1]+DP[i-1][j]*j。

#include<iostream>   using namespace std;int main()  {__int64 a[26][26],res;int c,i,j,T;memset(a,0,sizeof(a));a[1][1]=1;for(i=2;i<=25;i++)for(j=1;j<=25;j++)a[i][j]=a[i-1][j-1]+a[i-1][j]*j;cin>>T;while(T--){cin>>c;for(i=1,res=0;i<=c;i++)res+=a[c][i];printf("%I64d\n",res);}    return 0;  }


0 0
原创粉丝点击