• hdu1400Mondriaan's Dream


    这是一道很好的题目,我不会做,所以答案是从网上弄的。

    把人家的代码又重新写了一遍,发现他的也是错的——可能跟编译器有关,但是为什么提交的时候可以通过呢???神奇

    就因为dp[i][j]这个错了

    通过的代码

    #include<iostream>
    #include<cstring>
    using namespace std;
    const int mm=1<<13;
    long long dp[14][mm];
    int w,h;
    bool line_one(int x)
    {
        for(int i=0;i<w;)
        if((x&(1<<i))>0)
        {
            if(i==w-1||(x&(1<<(i+1)))==0)
            return 0;
            i+=2;
        }else i++;
        return 1;
    }
    bool trans(int a,int b)
    {
        for(int i=0;i<w;)
        {
            if((a&(1<<i))>0)
            {
                if((b&(1<<i))==0)i++;
                else if(i==w-1||(a&(1<<(i+1)))==0||(b&(1<<(i+1)))==0)return 0;
                else i+=2;
            }
            else if((b&(1<<i))>0)i++;
            else return 0;
        }
        return 1;
    }
    int main()
    {
        while(cin>>w>>h)
        {
            if(w==0&&h==0)break;
            if(w>h){int zz=w;w=h;h=zz;}
            int z=1<<w;
            for(int i=0;i<z;i++)
            if(line_one(i))///判断一层状态合法
            dp[1][i]=1;
            for(int i=2;i<=h;i++)
            {
                for(int j=0;j<z;j++)
                { dp[i][j]=0;
                 for(int k=0;k<z;k++)
                 if(trans(k,j))///判断k状态能否转化到j状态
                 dp[i][j]+=dp[i-1][k];
                }
            }
    
            cout<<dp[h][z-1]<<"
    ";
        }
    }
  • 相关阅读:
    HTTP && 缓存
    querySelector $() getElementBy区别
    Canvas 雾玻璃
    Github page
    Browserify
    关于布局和结构
    how to install flash
    kali update can’t found win7 loader
    arp spoofing
    How To Set Up Port Forwarding in Linux
  • 原文地址:https://www.cnblogs.com/dowson/p/3302503.html
Copyright © 2020-2023  润新知