牛牛的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;
}
全部评论
有一点点小问题,试过好多次,才发现是因为: sum[i][j] += sum[i][j - 1] % mood不表示sum[i][j]=(sum[i][j]+sum[i][j-1])%mod,而表示sum[i][j]=sum[i][j]+sum[i][j-1]%mod。
点赞
送花
回复
分享
发布于 2020-02-09 09:58
可以dfs吗,不会
点赞
送花
回复
分享
发布于 2020-02-09 17:26
秋招专场
校招火热招聘中
官网直投

相关推荐

8 收藏 评论
分享
牛客网
牛客企业服务