DP怎么解?求递推公式。。。。。
f[1]=1;f[2]=2;
杨氏矩阵的方案数 f[n]=f[n-1]+(n-1)*f[n-2];
钩子公式:res=n! / (hock[1]*hock[2]*.....hock[n]);
hock[i]=在其上方和右方的所有个数+1;
#include<cstdio>
#include<cstring>
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int d[36];
int num[36];
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
for(int i=1;i<=n;i++)
scanf("%d",&d[i]);
int tot=0;
memset(num,0,sizeof(num));
for(int i=n;i>=1;i--)
{
for(int j=1;j<=d[i];j++)
{
tot++;
for(int k=i+1;k<=n;k++)
if(d[k]>=j)
num[tot]++;
else
break;
num[tot]+=d[i]-j+1;
}
}
long long int t1=1,t2=1;
for(int i=1;i<=tot;i++)
{
t1*=i;
t2*=num[i];
int t=gcd(t1,t2);
t1/=t;
t2/=t;
}
printf("%lld\n",t1/t2);
}
return 0;
}