Luogu P3120 [USACO15FEB]牛跳房子(金)Cow Hopscotch (Gold)
这是一道典型的记忆化搜索题。
f[x][y]表示以x,y为右下角的方案数。
code:
#include <cstdio> #define mod 1000000007 using namespace std; int n,m,k,a[751][751],f[751][751]; int DP(int x,int y){ if(f[x][y])return f[x][y]; for(int i=1;i<x;i++) for(int j=1;j<y;j++) if(a[i][j]!=a[x][y])f[x][y]+=DP(i,j),f[x][y]%=mod; return f[x][y]; } int main(){ scanf("%d %d %d\n",&n,&m,&k); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)scanf("%d",&a[i][j]); f[1][1]=1; printf("%d",DP(n,m)); return 0; }