#include <cmath>
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
double S[101][101];
void init()
{
for (int i=0;i<101;++i)
{
S[i][1]=1;
S[1][i]=0;
}
S[1][1]=1;
for (int i=2;i<101;++i)
{
for(int j=2;j<=i;++j)
{
S[i][j]=S[i-1][j-1]+j*S[i-1][j];
}
}
}
int main()
{
init();
int n;
while(~scanf("%d",&n)&&n)
{
double ans=0;
for (int i=1;i<=n;++i)
{
ans+=S[n][i];
}
printf("%d %.0f\n",n,ans);
}
}
Rhyme Schemes
本文介绍了一个使用C++实现的动态规划算法,通过预计算一个二维数组S来解决特定数学问题。该算法初始化一个101x101的矩阵,并利用双重循环填充矩阵,其中每个元素S[i][j]的值由前一个元素S[i-1][j-1]和S[i-1][j]计算得出。主函数中,读取输入n并计算所有S[n][i]的总和。


被折叠的 条评论
为什么被折叠?



