求助
查看原帖
求助
589190
YLgiegie楼主2023/4/1 21:44

样例错误,求助qwq

#include <bits/stdc++.h>
#define mem(a , b) memset(a , b , sizeof a)
#define N 13
#define M 2*N
#define inf 0x3f3f3f
#define mod 100000000
#define nulls ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
#define ll long long
#define endl '\n'
using namespace std;
int n , m , r[N] , dp[N][(1 << N)];
int main() {
	nulls;
	cin >> n >> m;
	for(int i = 1 ; i <= n ; i++) {
		for(int j = 1 ; j <= m ; j++) {
			int x ;
			cin >> x;
			r[i] <<= 1;
			r[i] |= x;
			//111 101
		}
	}
	for(int i = 0 ; i < (1 << m) ; i++) {
		if((i & r[1] == i) && (((i << 1) & i) == 0)) {
			dp[1][i] = 1;
		}
	}
	for(int i = 2 ; i <= n ; i++) { //枚举行
		for(int j = 0 ; j < (1 << m) ; j++) { //枚举上一行
			for(int k = 0 ; k < (1 << m) ; k++) { //枚举当前状态
				if(((k & r[i]) == k) && (((k << 1) & k) == 0) && ((j&k) == 0)) {
					dp[i][k] = (dp[i][k] + dp[i - 1][j]) % mod;
				}
			}
		}
	}
	ll ans = 0;
	for(int i = 0 ; i < (1 << m) ; i++) {
		ans = (ans + dp[n][i]) % mod;
	}
	cout << ans ;
	return 0;
}
2023/4/1 21:44
加载中...