题目描述
一个有 n 个元素的集合,将其分为任意个非空子集,求方案数。
注意划分出的集合间是无序的,即 {1,2},{3}} 和 {{3},{2,1}}算作一种方案。
由于答案可能会很大,所以要对 998244353 取模。
输入格式
第一行一个正整数 T,表示数据组数。
接下来 T 行,每行一个正整数 n。
输出格式
输出 T行,每行一个整数表示答案。
下面是我遇到的问题:
由于我想不到原本的状态转移方程,所以我使用了将n个元素的集合划分成指定元素个的状态转移方程,然后再在主函数里面遍历一遍求解,但是输出结果是错误的。代码如下
```c++
#include <bits/stdc++.h>
using namespace std;
int huafen(int i,int j)
{
if(i==j) return 1;
if(i<j) return 0;
if(i<0) return 0;
return huafen(i-1,j-1)+j*huafen(i-1,j);
}
int main()
{
int n[1005],t,i;
long long ans[1005];
cin>>t;
for(i=0;i<t;i++)
cin>>n[i];
for(i=0;i<t;i++)
{
for(int j=1;j<=n[i];j++)
ans[i]+=huafen(n[i],j);
cout<<ans[i]<<endl;
}
}
```