题意....挺简单的就自己读吧。
做法..更简单了.dp方程f[i][j]=f[i-1][j]*j+f[i-1][j-1];f[i][j]表示长度为i其中最大数为j
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdlib>
using namespace std;
double f[210][210];
int n;
int main()
{
double sum;
while (scanf("%d",&n)&&n!=0)
{
memset(f,0,sizeof(f));
f[0][0]=1;
sum=0;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
f[i][j]+=f[i-1][j-1]+f[i-1][j]*(j);
for (int i=1;i<=n;i++)
sum+=f[n][i];
printf("%d %.0f\n",n,sum);
}
return 0;
}