题目链接
题意
赛时提示:保证出发点和终点都是空地
帕秋莉掌握了一种木属性魔法
这种魔法可以生成一片森林(类似于迷阵),但一次实验时,帕秋莉不小心将自己困入了森林
帕秋莉处于地图的左下角,出口在地图右上角,她只能够向上或者向右行走
现在给你森林的地图,保证可以到达出口,请问有多少种不同的方案
答案对2333取模
思路
- 用dp[i][j]表示到达i,j位置的方案数
- dp[i][j]=(dp[i+1][j]+dp[i][j-1])%2333
- 需要使用快速读
参考代码
#include<bits/stdc++.h>
using namespace std;
int aa[3010][3010];
int dp[3010][3010];
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()
{
int m,n;
read(m);
read(n);
for(int i=1; i<=m; i++)
{
for(int j=1; j<=n; j++)
{
read(aa[i][j]);
}
}
dp[m][0]=1;
for(int i=m; i>=1; i--)
{
for(int j=1; j<=n; j++)
{
if(!aa[i][j])
dp[i][j]=(dp[i+1][j]+dp[i][j-1])%2333;
}
}
printf("%d",dp[1][n]);
}