zoukankan      html  css  js  c++  java
  • hdu 1292分组(dp)

    考虑一支队伍分组的数目,如果这支队伍有n个人,就有n种情况分别是一个组,两个组。。。。

    i个人分成j组有两种方式,一种是i-1个人分成j-1组之后,第i个人独立分成一组,另一种情况是i-1个人分成j组,第i个人随便加入j组中的任何一组,也都符合条件。状态转移方程为f[i][j]=f[i-1][j-1]+f[i-1][j]*j。

    #include <iostream>
    #include <cstring>
    using namespace std;
    long long dp[30][30];
    int main(int argc, char *argv[])
    {
    	int t,n,i,j;long long ans;
    	cin>>t;
    	while(t--)
    	{
    		cin>>n;
    		dp[1][1]=1;
    		for(i=2;i<=n;i++)
    		for(j=1;j<=n;j++)
    		dp[i][j]=dp[i-1][j-1]+dp[i-1][j]*j;
    		for(ans=0,i=1;i<=n;i++)
    		ans+=dp[n][i];
    		cout<<ans<<endl;
    	}
    	return 0;
    }


     

  • 相关阅读:
    增删改查
    兴趣爱好
    兴趣爱好界面
    购物商城
    计算器
    安卓第四周作业
    安卓第一周作业
    第十五周作业
    十三周作业-集合
    第十三周上机练习
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3356107.html
Copyright © 2011-2022 走看看