POJ 2411

来源:互联网 发布:json文件格式转换工具 编辑:程序博客网 时间:2024/06/07 16:09

    一道很经典的状态压缩DP,网上已经有很好的解题报告(http://www.cnblogs.com/scau20110726/archive/2013/03/14/2960448.html)就请大家移步去看看吧!
代码(G++):

#include <iostream>#include <cstring>#define MAX 11using namespace std;long long dp[MAX+1][1<<MAX];bool check(int s){    while(s)    {        if(s & 1)        {            if(s>>1 & 1) s >>= 2;            else return false;        }else s >>= 1;    }    //cout<<1<<endl;    return true;}bool check2(int ss, int s, int w){    for(int i=0; i<w; i++)    {        if(!(ss & 1) && !(s & 1)) return false;        else{            ss >>= 1;            s >>=1;        }    }    return true;}int main(){    int h, w;    while(cin>>h>>w && h+w!=0)    {        if(h*w & 1)        {            cout<<0<<endl;            continue;        }        if(h < w) swap(h, w);        //cout<<h<<'\t'<<w<<endl;        memset(dp, 0, sizeof(dp));        for(int s=0; s<(1<<w); s++)        {            if(check(s)) dp[0][s] = 1;        }        for(int i=1; i<h; i++)        {            for(int s=0; s<(1<<w); s++)            {                for(int ss=0; ss<(1<<w); ss++)                {                    if(check2(ss, s, w) && check(s & ss))                        dp[i][s] += dp[i-1][ss];                }            }        }        /*for(int i=0; i<h; i++)        {            for(int j=0; j<(1<<w); j++) cout<<dp[i][j]<<'\t';            cout<<endl;        }*/        cout<<dp[h-1][(1<<w)-1]<<endl;    }    return 0;}

题目:(部分图没有粘过来)
Mondriaan’s Dream

Description

Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after producing the drawings in his ‘toilet series’ (where he had to use his toilet paper to draw on, for all of his paper was filled with squares and rectangles), he dreamt of filling a large rectangle with small rectangles of width 2 and height 1 in varying ways.

Expert as he was in this material, he saw at a glance that he’ll need a computer to calculate the number of ways to fill the large rectangle whose dimensions were integer values, as well. Help him, so that his dream won’t turn into a nightmare!

Input

The input contains several test cases. Each test case is made up of two integer numbers: the height h and the width w of the large rectangle. Input is terminated by h=w=0. Otherwise, 1<=h,w<=11.

Output

For each test case, output the number of different ways the given rectangle can be filled with small rectangles of size 2 times 1. Assume the given large rectangle is oriented, i.e. count symmetrical tilings multiple times.
Sample Input

1 2
1 3
1 4
2 2
2 3
2 4
2 11
4 11
0 0

Sample Output

1
0
1
2
3
5
144
51205

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 情侣过了热恋期怎么办 下围棋太稳了怎么办 苹果5home键失灵怎么办 鱼咸了怎么办怎么补救 工作干不下去了怎么办 长治限行外地车怎么办 低压电工证丢了怎么办 秘讯密语是骗局,怎么办 公司不给小产假怎么办? 吃饭要发票不给怎么办 客厅吊灯买大了怎么办 贝聊等登不上去怎么办 酒店订错了时间怎么办 辞职后奖金不发怎么办 小孩被水母蛰了怎么办 被剧毒水母蛰了怎么办 被水母蛰了很痒怎么办 ipo被否了将来怎么办 科技布沙发裂了怎么办 35岁皮肤皱纹多怎么办 22岁皮肤皱纹多怎么办 腿上皮肤皱纹多怎么办 16岁皮肤有皱纹怎么办 28岁皮肤有皱纹怎么办 眼睛上有血管翳怎么办 鸽子家飞时间短怎么办 宝宝吃母乳不吃奶瓶怎么办 邮件群发超50人怎么办 鸽子拉白色水便怎么办 进京没办进京证怎么办 吃海鲜喝牛奶了怎么办 煎牛排油少了怎么办 网上订酒店去后怎么办 澳洲语言班没过怎么办 照片粘在玻璃上怎么办 照片粘玻璃上怎么办啊 个人3月旅游签证怎么办 澳洲签证拒签了怎么办 我想买房子可是没钱怎么办 微信身份证17位怎么办 身份证后4位泄露怎么办