P1595 信封问题——题解2020.10.7

    科技2026-03-16  5

    P1595 信封问题

    思路分析

    定义一个一维数组 f[ ] ,下标表示信封数,存放情况数;根据递推公式 f(n) = (n-1)*(f(n-1) + f(n-2)) 即可得出本题答案;

    注意事项

    由题可知:信封数 n <= 20;所以需要定义数组为 long long 类型;输出格式应该用 %lld,防止输出负数;

    代码实现

    #include <stdio.h> int main(){ int n, i; long long f[20]; scanf("%d", &n); f[1] = 0; f[2] = 1; for(i = 3; i <= n; i++) f[i] = (i-1)*(f[i-1] + f[i-2]); printf("%lld", f[n]); return 0; }
    Processed: 0.009, SQL: 9