poj3254

来源:互联网 发布:鲁尼植发价格 知乎 编辑:程序博客网 时间:2024/04/29 11:00
#include <iostream>#include<cstdio>#include<cmath>#include<string>#include<cstring>#include<algorithm>using namespace std;const int maxn=13;const int inf = 0x3f3f3f3f;const int mod=1e8;bool cant[(1<<maxn)]={0};int f[maxn][(1<<maxn)]={0};int main(){    int m,n;    cin>>m>>n;    int maxs=(1<<n);    int a[maxn]={0};    for(int i=0;i<maxs;i++)        if(i&(i>>1)) cant[i]=true;    for(int i=0;i<m;i++)        for(int j=0;j<n;j++)        {            int x;            cin>>x;            if(x==0) a[i]=a[i]^(1<<j);        }    for(int j=0;j<maxs;j++) f[0][j]=(cant[j] || (a[0]&j))?0:1;    for(int i=1;i<m;i++)    {        for(int j=0;j<maxs;j++)        {            if(cant[j] || (a[i]&j)) continue;            for(int k=0;k<maxs;k++)            {                if(cant[k] || j&k) continue;                f[i][j]=(f[i][j]+f[i-1][k])%mod;            }        }    }    int ans=0;    for(int j=0;j<maxs;j++) ans=(ans+f[m-1][j])%mod;    cout<<ans<<endl;    return 0;}
0 0
原创粉丝点击