洛谷 P1879 [USACO06NOV]玉米田Corn Fields

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
int dp[15][1<<12];
int s[1<<12],ma[1<<12];
int n,m;
int l[15];
int main()
{
    int i,j;
    scanf("%d %d",&n,&m);
    for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
    {
    int t; 
    scanf("%d",&t);
    if(t==0) 
    ma[i]=ma[i]|(1<<j-1);
    } 
    int k=0;
    for(i=0;i<(1<<m);i++)
    {
    if(!(i&(i<<1))) s[++k]=i;
    }
    for(int i=1;i<=k;i++) 
    {
        if(!(s[i]&ma[1]))dp[1][i]=1;
    }
    for(i=2;i<=n;i++)
    { 
    for(j=1;j<=k;j++)
    {
        if(!(ma[i]&s[j]))
        for(int r=1;r<=k;r++)
            {
                if(!(ma[i-1]&s[r]))
                {
                    if(!(s[j]&s[r]))
                    dp[i][j]+=dp[i-1][r];
                }
            } 
        }
    }
    int ans=0;
    for(i=1;i<=k;i++)
    {
        ans=(ans+dp[n][i])%1000000000;
    }
    printf("%d",ans);
    //2019中考种皮选手 
    return 0; 
    //智取O2 
}

毒瘤,if写“==”弄成了“=”

调试了半节课

原文地址:https://www.cnblogs.com/zsx6/p/10869062.html