#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int M[13]={};
int c;
int ct,num;
for(int i=1;i<=n;i++){
ct=0,num=0;
for(int j=1;j<=m;j++){
cin>>c;
if(c==1){
num+=pow(2,ct);
}
ct++;
}
M[i]=num;
}
vector<int>ok;
int t=0;
num=0;
int cnt[378];
int h[4097]={};
for(int i=0;i<=pow(2,m)-1;i++){
t=0;
if(((i<<1 | i>>1) & i)!=0){
continue;
}
for(int j=i;j>0;j/=2){
if(j%2==1){
t++;
}
}
ok.push_back(i);
cnt[i]=t;
h[i]=num;
num++;
}
vector<vector<long long>>dp,ldp;
dp.assign(378,vector<long long>(145,0));
ldp=dp;
ldp[0][0]=1;
long long ans=0;
for(int i=1;i<=n;i++){
for(auto x:ok){
if((x&M[i])==x){
for(auto j:ok){
if((x&j)==0){
for(int k=0;k<=n*m;k++){
if(k-cnt[x]>=0){
dp[h[x]][k]=(dp[h[x]][k]+ldp[h[j]][k-cnt[x]])%100000000;
}
}
}
}
}
}
ldp=dp;
dp.assign(378,vector<long long>(145,0));
}
for(auto x:ok){
for(int k=0;k<=n*m;k++){
ans=(ans+ldp[h[x]][k])%100000000;
}
}
cout<<ans;
return 0;
}
為甚麼希哈會失敗啊啊啊??!
h中間有幾格出錯了,求DaLao救援