「木」迷雾森林 (路径DP)
思路:板子题,唯一需要注意的是数据较大要用到快读。
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int mod=2333,N=3e3+5;
int m,n;
int a[N][N],dp[N][N];
int read(){ //快读
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
int main(){
n=read(),m=read();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) a[i][j]=read();
dp[n][1]=1;
for(int i=n;i>=1;i--)
for(int j=1;j<=n;j++)
{
if(!a[i][j]) dp[i][j]=max(dp[i][j],dp[i+1][j]+dp[i][j-1])%mod;
//printf("dp[%d][%d]=%d\n",i,j,dp[i][j]);
}
printf("%d\n",dp[1][n]);
return 0;
}