dp求解道路条数



帕秋莉掌握了一种木属性魔法 这种魔法可以生成一片森林(类似于迷阵),但一次实验时,帕秋莉不小心将自己困入了森林 帕秋莉处于地图的左下角,出口在地图右上角,她只能够向上或者向右行走 现在给你森林的地图,保证可以到达出口,请问有多少种不同的方案 答案对2333取模

 


第一行两个整数m , n表示森林是m行n列
接下来m行,每行n个数,描述了地图
0 - 空地
1 - 树(无法通过)

链接:https://ac.nowcoder.com/acm/problem/53675

输出描述:

一个整数表示答案
示例1

输入

3 3
0 1 0
0 0 0
0 0 0

输出

3

注意地图有坑!!

#include<bits/stdc++.h>
using namespace std;
int n,m;
bool Map[3001][3001];
int YHT[3001][3001];
template<class T>inline void read(T &res){char c;T flag=1;while((c=getchar())<'0'||c>'9')if(c=='-')flag=-1;res=c-'0';while((c=getchar())>='0'&&c<='9')res=res*10+c-'0';res*=flag;}
int main()
{
    read(m);
    read(n);
    for(int i=n;i>=1;i--)
    {
        for(int j=1;j<=n;j++) read(Map[i][j]);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(i==1&&j==1) YHT[i][j]=1;
            else if(i==1)
            {
                if(!Map[i][j])
                YHT[i][j]=YHT[i][j-1];
                else
                {
                    YHT[i][j]=0;
                }
            }
            else if(j==1)
            {
                if(!Map[i][j])
                YHT[i][j]=YHT[i-1][j];
                else YHT[i][j]=0;
            }
            else
            {
                if(!Map[i][j])
                YHT[i][j]=(YHT[i-1][j]+YHT[i][j-1])%2333;
                else
                {
                    YHT[i][j]=0;
                }
            }
        }
    }
    printf("%d\n",YHT[m][n]);
    
    
}

 

posted @ 2020-04-22 16:37  ___Charles  阅读(182)  评论(0)    收藏  举报