题意:求n个变量总共有多少种序列关系
我也是在一个贴吧里看到某位大神给的地推公式
g(0)=1
g(1)=1
g(2)=1+g(1)*C_2^1=3
g(3)=1+g(1)*C_3^1+g(2)*C_3^2=1+3*1+3*3=13
g(4)=1+g(1)*C_4^1+g(2)*C_4^2+g(3)*C_4^3=1+1*4+3*6+13*4=7
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
#define mod 100000000
const int maxn = 3001;
const int Inf = 0x3f3f3f3f;
int c[maxn][maxn];
ll a[maxn]={0,1,3};
void init()
{
memset(a,0,sizeof(a));a[0]=1,a[1]=1,a[2]=3;
c[0][0]=1,c[1][0]=1,c[1][1]=1;
for(int i=2;i<maxn;i++){
c[i][0]=c[i][i]=1;
for(int j=1;j<i;j++){
c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
}
}
for(int i=3;i<maxn;i++){
a[i]+=1;
for(int j=1;j<i;j++){
a[i]=(a[i]+(a[j]*c[i][j])%mod)%mod;
}
}
}
int main()
{
int n;
init();
while(scanf("%d",&n)==1&&n){
printf("%d\n",a[n]);
}
return 0;
}