注意下 递推关系式:a[ i ] [ j ] = a[ i - 1 ][ j - 1 ] + a[ i - 1 ] [ j ] * j;
解析:i 个人的 j 组合数量等与 : (1)将第 i 个 人单独放置( a[ i - 1 ] [ j - 1 ] )( 2 ) 将这个人并入前i-1人的j组合中( a[ i - 1 ][ j ] * j ) 注意要乘以j 应为每一种组合都有j组 并且均为不同状态
代码如下:
#include <iostream>
using namespace std;
int main()
{
__int64 a[26][26], t, n;
a[1][1] = 1;
a[1][0] = 0;
for( int i = 2; i < 26; i++ ){
a[i][i] = 1;
a[i][0] = 0;
a[i][1] = 1;
for( int j = 1; j < i; j++ ){
a[i][j] = a[i-1][j-1] + a[i-1][j] * j;
}
}
cin >> t;
while( t-- ){
cin >> n;
__int64 sum = 0;
for( int i = 1; i <= n; i++ ){
sum += a[n][i];
}
cout << sum << endl;
}
return 0;
}