Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define M 1000000007
- int k;
- map<pt,int>ww;
- long long sl(int w,int h){
- if (w==0||h==0)return 1;
- if (ww.find(mp(w,h))!=ww.end())return ww[mp(w,h)];
- int f[w+5][w+5];
- m0(f);
- f[0][0]=1;
- for (int i=0;i<=w;i++)for (int j=0;j<=i;j++){
- 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;
- f[i+1][0]=(f[i+1][0]+f[i][j]*1ll*sl(j,h-1))%M;
- }
- return ww[mp(w,h)]=f[w+1][0];
- }
- int BricksN::countStructures(int w, int h, int K) {
- k=K;
- return sl(w,h);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement