标签:des style blog http io ar os sp for
#include<iostream> #include<map> #include<string> #include<cstring> #include<cstdio> #include<cstdlib> #include<cmath> #include<queue> #include<vector> #include<algorithm> using namespace std; const int M=1000000007; int n,m,k; int pic[60][60]; int dp[60][60][20][20]; int dx[2]={0,1}; int dy[2]={1,0}; bool isbeyond(int x,int y) { return x<0||y<0||x>=n||y>=m; } int dfs(int x,int y,int num,int mx) { int i,tx,ty; if(isbeyond(x,y)||num>k) return 0; if(x==n-1&&y==m-1) { if(num==k) return 1; if(num==k-1&&pic[x][y]>mx) return 1; return 0; } if(dp[x][y][num][mx]!=-1) return dp[x][y][num][mx]; dp[x][y][num][mx]=0; for(i=0;i<2;i++) { tx=x+dx[i]; ty=y+dy[i]; dp[x][y][num][mx]+=dfs(tx,ty,num,mx); dp[x][y][num][mx]%=M; if(pic[x][y]>mx) { dp[x][y][num][mx]+=dfs(tx,ty,num+1,pic[x][y]); dp[x][y][num][mx]%=M; } } return dp[x][y][num][mx]; } int main() { int i,j; cin>>n>>m>>k; for(i=0;i<n;i++) for(j=0;j<m;j++) { cin>>pic[i][j]; pic[i][j]++; } memset(dp,-1,sizeof(dp)); cout<<dfs(0,0,0,0); return 0; }
标签:des style blog http io ar os sp for
原文地址:http://blog.csdn.net/stl112514/article/details/41909637