一道经典的递推,集合划分计数,洛谷题号5748,有些问题求解答

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

题目描述
一个有 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;
    }
}

```