以下の内容はhttps://drken1215.hatenablog.com/entry/2024/09/29/142022より取得しました。


鉄則本 A25 - Number of Routes (3Q, ★3)

グリッド上の最短経路の数え上げをする DP。鉄則本の問題なので、コードのみ。

問題概要

 H \times W のグリッドがあり、各マスは壁または通路である。左上マスと右下マスは通路である。

左上マスから右下マスへと、右方向と下方向の移動のみを繰り返し、壁マスに入ることなく到達する経路の本数を数えよ。

制約

  •  1 \le H, W \le 30

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int H, W;
    cin >> H >> W;
    vector<string> C(H);
    for (int i = 0; i < H; i++) cin >> C[i];

    vector dp(H, vector(W, 0LL));
    dp[0][0] = 1;
    for (int i = 0; i < H; i++) for (int j = 0; j < W; j++) {
        if (C[i][j] == '#') continue;
        if (i-1 >= 0) dp[i][j] += dp[i-1][j];
        if (j-1 >= 0) dp[i][j] += dp[i][j-1];
    }
    cout << dp[H-1][W-1] << endl;
}



以上の内容はhttps://drken1215.hatenablog.com/entry/2024/09/29/142022より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14