Submission #67456853
Source Code Expand
// 綺麗に解きなおし
#include <bits/stdc++.h>
using namespace std;
/////////////////// メイン ///////////////////
int main() {
//////////////////// 入力 ////////////////////
int h, w;
cin >> h >> w;
// 文字列のvectorとしてグリッドを受け取る
vector<string> maze(h);
for (int i=0; i<h; i++){
cin >> maze.at(i);
}
//////////////// 出力変数定義 ////////////////
int result = 0;
//////////////////// 処理 ////////////////////
// 剰余類環の法
int mod = 1e9+7;
// 経路数を記録する二次元vector
// counters.at(i).at(j)は、マス(i,j)への経路数
// 壁の場合に楽ができるように0で初期化する
vector<vector<int>> counters(h,vector<int>(w,0));
// 二次元DP
for (int i=0; i<h; i++) {
for (int j=0; j<w; j++) {
// 壁マスだったら何もしない
// 0で初期化してあるので、何もしなくていい
if (maze.at(i).at(j)=='#') continue;
// 左上のマスの場合
if (i==0&&j==0) {
// 明らかに1通り
counters.at(i).at(j) = 1;
// 上端列(左上以外)の場合
} else if (i==0) {
// すぐ左のマスから来るしかない
counters.at(i).at(j) = counters.at(i).at(j-1);
// 左端列(左上以外)の場合
} else if (j==0) {
// すぐ上のマスから来るしかない
counters.at(i).at(j) = counters.at(i-1).at(j);
// それ以外の場合
} else {
// 上から来るか左から来るかの和
// 足し算のたびに剰余計算をしておく
counters.at(i).at(j) = (counters.at(i-1).at(j)+counters.at(i).at(j-1))%mod;
}
}
}
// 答えは右下のマスの値
result = counters.at(h-1).at(w-1);
//////////////////// 出力 ////////////////////
cout << result << endl;
//////////////////// 終了 ////////////////////
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | H - Grid 1 |
| User | wightou |
| Language | C++ 23 (gcc 12.2) |
| Score | 100 |
| Code Size | 2054 Byte |
| Status | AC |
| Exec Time | 20 ms |
| Memory | 9452 KiB |
Judge Result
| Set Name | All | ||
|---|---|---|---|
| Score / Max Score | 100 / 100 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| All | 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 0_00 | AC | 1 ms | 3536 KiB |
| 0_01 | AC | 1 ms | 3644 KiB |
| 0_02 | AC | 1 ms | 3532 KiB |
| 0_03 | AC | 1 ms | 3504 KiB |
| 1_00 | AC | 1 ms | 3472 KiB |
| 1_01 | AC | 1 ms | 3472 KiB |
| 1_02 | AC | 19 ms | 9376 KiB |
| 1_03 | AC | 15 ms | 9376 KiB |
| 1_04 | AC | 15 ms | 9320 KiB |
| 1_05 | AC | 19 ms | 9248 KiB |
| 1_06 | AC | 18 ms | 9452 KiB |
| 1_07 | AC | 18 ms | 9296 KiB |
| 1_08 | AC | 18 ms | 9240 KiB |
| 1_09 | AC | 18 ms | 9232 KiB |
| 1_10 | AC | 18 ms | 9184 KiB |
| 1_11 | AC | 20 ms | 9288 KiB |