牛牛的DRB迷宫I
牛牛的DRB迷宫I
http://www.nowcoder.com/questionTerminal/9e77f64141ca4816b81d1f598e6fcf10
可以从选择一个空格进行分析最终得到答案,如果一个空格只与其左边的空格相连通(即a[i][j - 1] == 'R'),那么到达这个空格与到达其左边空格的总方案相等。如果一个空格只与其上边的空格相连通(即a[i - 1][j] == 'D'),那么到达这个空格与到达其上边空格的总方案相等。如果一个空格只与其左边的空格相连通(即a[i][j - 1] == 'B',a[i - 1][j] == 'B'),那么到达这个空格的总方案等于左边和上边的总和。
#include<bits/stdc++.h> using namespace std; const int mood = 1e9 + 7; long long sum[55][55];//记录每个到达该空格的所有方案。 char a[55][55]; int n, m; int main(){ cin >> n >> m; for (int i = 1; i <= n; i ++) for (int j = 1; j <= m; j ++) cin >> a[i][j]; sum[1][1] = 1; for (int i = 1; i <= n; i ++) for (int j = 1; j <= m; j ++){ if (a[i][j - 1] == 'R' || a[i][j - 1] == 'B') sum[i][j] += sum[i][j - 1] % mood;//加上从左边到达该空格的所有方案。 if (a[i - 1][j] == 'D' || a[i - 1][j] == 'B') sum[i][j] += sum[i - 1][j] % mood;//加上从上边到达该空格的所有方案。 } cout << sum[n][m] % mood; return 0; }