#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写“==”弄成了“=”
调试了半节课