zoukankan      html  css  js  c++  java
  • sdut 2619 地板砖(状态压缩dp)

    这是做的第二道状态压缩dp题,又学习了……

     1 #include<stdio.h>
     2 #include<string.h>
     3 #define mo 10007
     4 int dp[510][1<<6];
     5 int n,m;
     6 
     7 int ok(int j,int k)
     8 {
     9   int r1,r2,f=1,col,i;//col表示上一个颜色相同的格子的颜色,f表示上下两行相邻的是否相同。
    10   for(i=1; i<=m; i++)
    11   {
    12      r1=j%2; r2=k%2;
    13      if(r1!=r2)
    14      f=1;
    15      else
    16      {
    17          if(f==0&&col==r1)
    18          return 0;
    19          f=0; col=r1;
    20      }
    21      j=j>>1; k=k>>1;
    22   }
    23 
    24   return 1;
    25 };
    26 
    27 int main()
    28 {
    29     int i,j,k,ans;
    30     while(~scanf("%d%d",&n,&m))
    31     {
    32         memset(dp,0,sizeof(dp));
    33         for(i=0; i<(1<<m); i++)
    34         dp[1][i]=1;//第一行都设为1;
    35 
    36         for(i=2; i<=n; i++)
    37         for(j=0; j<(1<<m); j++)
    38         for(k=0; k<(1<<m); k++)
    39         if(ok(j,k))
    40         dp[i][j]=(dp[i][j]+dp[i-1][k])%mo;
    41 
    42         ans=0;
    43         for(i=0; i<(1<<m); i++)
    44         ans=(ans+dp[n][i])%mo;
    45         printf("%d\n",ans);
    46     }
    47 }
  • 相关阅读:
    database join
    图像超分辨率重建
    信号处理
    将博客搬至CSDN
    Openstack
    nginx的优化
    CentOS系统的优化
    zabbix服务端客户端部署
    MySQL优化必须调整的10项配置
    TCP三次握手
  • 原文地址:https://www.cnblogs.com/bfshm/p/3121450.html
Copyright © 2011-2022 走看看