zoukankan      html  css  js  c++  java
  • 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]<<"
    ";
        }
    }
  • 相关阅读:
    RPC
    Memcache
    python supervisor使用
    代码规范
    值传递,引用传递
    日志文件目录
    input标签的事件汇总
    箭头函数
    JS数组reduce()方法
    关于Python变量的学习总结
  • 原文地址:https://www.cnblogs.com/dowson/p/3302503.html
Copyright © 2011-2022 走看看