• SDUT ACM 2619 地板砖 状态压缩启蒙题。。 Anti


     

    地板砖

    Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

    题目描述

    利用假期时间,豆豆找个了临时工,帮有钱人家贴地板砖,假设房子的形状为 N x M 矩形,每个地板砖的大小为 1 x 1,且只有黑白两种颜色,这家人很奇怪,他们不喜欢房间中任何一个 2 x 2 的局部区域的 块地板砖的颜色一样。如果出现这种图案,豆豆就要重新贴,这当然难不倒豆豆,但爱学习的豆豆,想知道满足要求的法一共用多少种。

    如下图所示:Figure 1.为满足要求的贴法,Figure 2.为不满足要求的贴法

    输入

     

    输入包含多组测试数据,对于每组测试数据:

    输入只有两个正整数 NM(N  500, M  5),分别代表房间的长度和宽度。

    输出

     

    对于每组测试数据,输出满足要求的贴法总数,由于答案可能很大,所以需要对10007取余。

    示例输入

    2 2
    3 3

    示例输出

    14
    322

    提示

     

    来源

     “师创杯”山东理工大学第五届ACM程序设计竞赛
     
     
    #include <stdio.h>
    #include <string.h>
    int dp[510][1<<5], n, m;
    const int MOD = 10007;
    bool check(int x, int y)
    {
        int a, b, c, d;
        for(int i = 0; i < m-1; i++)
        {
            a = x & (1<<i);
            b = y & (1<<i);
            c = x & (1<<i+1);
            d = y & (1<<i+1);
            if((a && b && c && d) || (!a && !b && !c && !d))
                return 0;
        }
        return 1;
    }
    int main()
    {
        while(scanf("%d %d", &n, &m) != EOF)
        {
            memset(dp, 0, sizeof(dp));
            for(int i = 0; i < 1<<m; i++)
                dp[1][i] = 1;
            for(int i = 2; i <= n; i++)
                for(int j = 0; j < 1<<m; j++)
                    for(int k = 0; k < 1<<m; k++)
                        if(check(j, k))
                            dp[i][j] = (dp[i][j] + dp[i-1][k]) % MOD;
            int ans = 0;
            for(int i = 0; i < 1<<m; i++)
                ans = (ans + dp[n][i]) % MOD;
            printf("%d\n", ans);
        }
        return 0;
    }
  • 相关阅读:
    Git与GitHub关联
    利用GitHub上的SimpleMemory装扮博客园
    第5课第4节_Binder系统_C程序示例_测试与总结
    第5课第1节_Binder系统_C程序示例_框架分析
    第4课第4节_Android灯光系统_源码分析_电池灯
    第4课第3节_Android灯光系统_编写HAL_lights.c
    第2课第1节_Android灯光系统_led_class驱动
    第4课第1节_Android灯光系统_总体框架
    Android 优秀博客
    4.5节_Android硬件访问服务使用反射
  • 原文地址:https://www.cnblogs.com/wolfred7464/p/3080242.html
Copyright © 2020-2023  润新知