zoukankan      html  css  js  c++  java
  • 紫书 例题 10-15 UVa 1638(递推)

    从大到小安排杆子

    分三种情况

    (1)插到最左边,那么左边看到了杆子会多一个

    (2)插到最右边,那么右边看到了杆子会多一个

    (3)插到中间边,那么不影响左边和右边看到的杆子数

    具体看代码

    #include<cstdio>
    #define REP(i, a, b) for(int i = (a); i < (b); i++)
    using namespace std;
    
    const int MAXN = 21;
    long long d[MAXN][MAXN][MAXN];
    
    int main()
    {
        d[1][1][1] = 1;
        REP(i, 2, MAXN)
            REP(j, 1, i + 1)
                REP(k, 1, i + 1)
                {
                    d[i][j][k] = d[i-1][j][k] * (i - 2);
                    if(j > 1) d[i][j][k] += d[i-1][j-1][k];
                    if(k > 1) d[i][j][k] += d[i-1][j][k-1];
                }
        
        int T, n, l, r;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%d%d%d", &n, &l, &r);
            printf("%lld
    ", d[n][l][r]);
        }
        
        return 0;
    }
  • 相关阅读:
    50
    49
    Windows编程之connect函数研究
    48
    C++创建窗口程序初步
    47
    46
    45
    计算机组成原理实验思路
    44(function pointer 2)
  • 原文地址:https://www.cnblogs.com/sugewud/p/9819504.html
Copyright © 2011-2022 走看看