Advertisement
Guest User

Untitled

a guest
Nov 14th, 2011
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.50 KB | None | 0 0
  1. #define M 1000000007
  2.  
  3. int k;
  4. map<pt,int>ww;
  5.  
  6. long long sl(int w,int h){
  7.   if (w==0||h==0)return 1;
  8.   if (ww.find(mp(w,h))!=ww.end())return ww[mp(w,h)];
  9.   int f[w+5][w+5];
  10.   m0(f);
  11.   f[0][0]=1;
  12.   for (int i=0;i<=w;i++)for (int j=0;j<=i;j++){
  13.     for (int l=1;l<=k;l++)if (i+l>w)break;else f[i+l][j+l]=(f[i+l][j+l]+f[i][j])%M;
  14.     f[i+1][0]=(f[i+1][0]+f[i][j]*1ll*sl(j,h-1))%M;
  15.   }
  16.   return ww[mp(w,h)]=f[w+1][0];
  17. }
  18.  
  19. int BricksN::countStructures(int w, int h, int K) {
  20.   k=K;
  21.   return sl(w,h);
  22. }
  23.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement