50 pts 求助
查看原帖
50 pts 求助
1015780
newbieTroll楼主2023/11/1 22:12
#include<bits/stdc++.h>
using namespace std;
#define int long long
int b[15][15];
int a[15];
bool h[1<<12+5];
int dp[15][1<<12+5];
const int mod=100000000;
signed main(){
	int n,m;
	cin>>m>>n;int x=1<<m;
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j){
			cin>>b[i][j];
			a[i]=(a[i]<<1)+b[i][j];
		}
	}for(int i=0;i<x;++i){
		h[i]=(!(i&(i<<1)))&&(!(i&(i>>1)));
	}dp[0][0]=1;
	for(int i=1;i<=n;++i){
		for(int j=0;j<x;++j){
			if(h[j]&&((j&a[i])==j)){
				for(int k=0;k<x;++k){
					if((k&j)==0){
						dp[i][j]=(dp[i][j]+dp[i-1][k])%mod;
					}
				}
			}
		}
	}int ans=0;
	for(int i=0;i<x;++i){
		ans=(ans+dp[n][i])%mod;
	}cout<<ans<<endl;
	return 0;
} 
2023/11/1 22:12
加载中...