30分求助!!!
查看原帖
30分求助!!!
343245
Bigfish_楼主2022/9/29 17:49
#include <bits/stdc++.h>
using namespace std;
int m,n;
int f[13][(1<<12)+5];
bool b;
bool f2[13][(1<<12)+5];
int main()
{
	scanf("%d%d",&n,&m);
	for(int t=1;t<=n;++t)
	{
		long long u1=0,u2=(1<<(m-1));
		for(int i=1;i<=m;++i)
		{
			scanf("%d",&b);
			u1+=u2*b;
			u2/=2;
		}
		for(int i=0;i<(1<<m);++i)
		{
			if((!(i&u1))||((i<<1)&i)||((i>>1)&i)) continue;
			f2[t][i]=1;
		}
		f2[t][0]=1;
	}
	f[0][0]=1;
	f2[0][0]=1;
	for(int t=1;t<=n;++t)
	{
		for(int i=0;i<(1<<m);++i)
		{
			for(int j=0;j<(1<<m);++j)
			{
				if(f2[t][i]&&f2[t-1][j]&&(!(i&j)))
				{
					f[t][i]+=f[t-1][j];
				}
			}
		}
	}
	int ans=0;
	for(int t=0;t<(1<<m);++t)
	{ 
		ans+=f[n][t];
		ans%=100000000; 
	} 
	cout<<ans%100000000;
	return 0;
}
2022/9/29 17:49
加载中...