【Openjudge】旅行

wzhd大佬的24行代码%%%

#include
#include
#include
#include
using namespace std;
long long dp[1005][200005];
int n,cnt=1;
int main()
{
    cin>>n;
    dp[2][1] = 1;
    for(int i = 3;i <= n;i ++)
        for(int j = 1;j <= cnt;j ++)
        {
            dp[i][j] += (i-1) * (dp[i-1][j] + dp[i-2][j]);
            if(dp[i][j] > 1000000000) dp[i][j+1] += dp[i][j] / 1000000000,dp[i][j] %= 1000000000;
            if(dp[i][j+1]) cnt++;
        }
    int t;
    for(t = cnt;!dp[n][t];t --);
    cout<for(int j = t-1;j >= 1;j --)
        printf("%09d",dp[n][j]);
}

你可能感兴趣的:(什么鬼)