zoukankan      html  css  js  c++  java
  • Number of Amidakuji


    (dp[i][j]:) 表示从((0,0))走到((i,j))的方案数

    [dp[i][j]=egin{cases} dp[i][j] + dp[i - 1][j - 1] & (从左边过来) \ dp[i][j] + dp[i - 1][j + 1] & (从右边过来) \ dp[i][j] + dp[i - 1][j] end{cases} ]

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    const int mod = 1000000007;
    
    int h, w, k;
    int dp[200][10];
    
    int main()
    {
        cin >> h >> w >> k;
    
        dp[0][0] = 1;
    
        for (int i = 1; i <= h; ++i) {
            for(int k = 0; k < (1 << (w - 1)); ++k) {
                
                bool flag = true;
                for (int j = 0; j < (w - 2); ++j) if ((k & (1 << j)) && (k & (1 << (j + 1)))) flag = false;
                if (!flag) continue;
    
                for (int j = 0; j < w; ++j) {
                    if (j >= 1 && (k & (1 << (j - 1)))) {
                        dp[i][j] += dp[i - 1][j - 1];
                        dp[i][j] %= mod;
                    }
                    else if (j + 1 < w && (k & (1 << j))) {
                        dp[i][j] += dp[i - 1][j + 1];
                        dp[i][j] %= mod;
                    }
                    else {
                        dp[i][j] += dp[i - 1][j];
                        dp[i][j] %= mod;
                    }
                } 
            }
        }
    
        printf("%d
    ", dp[h][k - 1]);
    
        return 0;
    }
    
    
  • 相关阅读:
    元素定位8种方法
    excel做数据驱动
    selenium colse()与quit()方法的区别
    flask 获取request参数的几种形式
    hdu1272
    土地征用
    任务安排
    征途
    锯木厂选址
    特别行动队
  • 原文地址:https://www.cnblogs.com/zgglj-com/p/10196485.html
Copyright © 2011-2022 走看看