poj 1671 Rhyme Schemes(第二类Stirling数)
来源:互联网 发布:韩剧秘密知乎 编辑:程序博客网 时间:2024/06/15 13:52
题意: 有n行诗,每行都有其韵律。
问题:n行诗存在的韵律组合数。
思路:第二类Stirling数是把个元素放入k个等价类的方法数目(每个等价类都不能为空)。(摘自维基百科,稍有修改)
注意到此题的'行数'>='韵律数',可以把'行数'抽象为n个元素,'韵律数'抽象为k个等价类.
所求即为:把n行放入k个‘韵律’中的方法数( 其中:1=< k <=n )。
状态转移方程:
F[ i, j ] = F[ i-1, j-1 ] + F[ i-1, j ] * j
F[ 1, j ] = 0 (j > 1) 表示:‘韵律数’超过'行数'时,一定会存在空'韵律'.
F[ i, 1 ] = 1 (i >= 1)表示:只存在一种‘韵律’时,把i行放入这一个‘韵律’中的方法数始终为1.
#include<iostream>#include<cstdio>using namespace std;// 变量int n; // 人数double F[101][101]; // F[i][j]:表示把i个人装进j个盒子中的方法数(每个盒子都非空)void DP(){// initfor( int j = 1; j <= 100; ++ j )F[1][j] = 0;for( int i = 1; i <= 100; ++ i )F[i][1] = 1;// dpfor( int i = 2; i <= 100; ++ i )for( int j = 2; j <= i; ++ j )F[i][j] = F[i-1][j-1] + F[i-1][j]*j;}int main(){DP();while( cin >> n && n ){double res = 0;for( int i = 1; i <= n; ++ i )res += F[n][i];printf( "%d %.0f\n", n, res );}return 0;}
- poj 1671 Rhyme Schemes(第二类Stirling数)
- POJ-1671 Rhyme Schemes 第二类Stirling数
- poj 1671 Rhyme Schemes 第二类Stirling数
- POJ 1671 Rhyme Schemes(第二类string数)
- POJ 1671 Rhyme Schemes
- poj 1671 Rhyme Schemes
- poj 1671 Rhyme Schemes
- POJ 1671 Rhyme Schemes
- 第二类Stirling数
- 第二类Stirling数
- 第二类Stirling数
- 【笔记】第一类Stirling数和第二类Stirling数
- 第一类Stirling数和第二类Stirling数
- 第一类stirling数和第二类stirling数
- 【知识点】 --- 第一类Stirling数和第二类Stirling数
- 第一类Stirling 数 与 第二类Stirling 数
- 第一类Stirling数和第二类Stirling
- 第一类Stirling数和第二类Stirling
- Android中级教程之----Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
- TPC-H整理
- hdu 4467 Graph
- tomcat原理
- 计算机系统结构试题(流水线,RISC,并行处理)
- poj 1671 Rhyme Schemes(第二类Stirling数)
- hdu2492 Ping pong 树状数组BIT
- 邮件发送
- Hdu 2063 过山车 最大匹配
- C/C ++程序内存分配详解
- 实现一个函数,对一个正整数n,算得到1需要的最少操作次数?
- PostgreSQL TPC-H测试
- 【学习笔记】JavaScript(2013-10-06)
- POj 3041 Asteroids 最小点覆盖