求助求助我正反字典序都85
查看原帖
求助求助我正反字典序都85
93493
Str1n9楼主2020/10/5 11:47

为啥字典序正反我都WA 3 4啊好气哦

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
const int MAX_LEN = 15;

int n, m, ans, cnt;
bool Squ[MAX_LEN + 2][MAX_LEN + 2], Fliped[MAX_LEN][MAX_LEN], solved;
inline void Flip(int i, int j) {
	Squ[i][j] = !Squ[i][j];
	Squ[i + 1][j] = !Squ[i + 1][j];
	Squ[i - 1][j] = !Squ[i - 1][j];
	Squ[i][j + 1] = !Squ[i][j + 1];
	Squ[i][j - 1] = !Squ[i][j - 1];
	return;
}
inline int Min(int a, int b) {
	return a < b ? a : b;
}

void Check(int k) {
	int tmp = k;
	memset(Fliped, false, sizeof(Fliped));
	int cnt1 = 0;
	for (int j = 1; j <= m; j++, k >>= 1) {
		if (k & 1) {
			Fliped[1][m - j + 1] = true;
			Flip(1, m - j + 1);
			cnt1++;
		}
	}
	for (int i = 2; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (Squ[i - 1][j]) {
				Fliped[i][j] = true;
				Flip(i, j);
				cnt1++;
			}
		}
	}
	bool flag = true;
	for (int j = 1; j <= m; j++) {
		if (Squ[n][j]) {
			flag = false;
		}
	}
	if (flag && cnt1 < cnt) {
		ans = tmp, cnt = cnt1, solved = true;
		//cout << cnt1 << endl;
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (Fliped[i][j]) {
				Flip(i, j);
				Fliped[i][j] = false;
			}
		}
	}
	return;
}
void Output(int k) {
	for (int j = 1; j <= m; j++, k >>= 1) {
		if (k & 1) {
			Fliped[1][m - j + 1] = true;
			Flip(1, m - j + 1);
		}
	}
	for (int i = 2; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (Squ[i - 1][j]) {
				Fliped[i][j] = true;
				Flip(i, j);
			}
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cout << Fliped[i][j];
			if (j < m) {
				cout << ' ';
			}
		}
		if (i < n) {
			cout << endl;
		}
	}
	return;
}

int main() {
	solved = false;
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> Squ[i][j];
		}
	}
	cnt = n * m + 1;
	for (int k = 0; k < (1 << m); k++) {
		Check(k);
	}
	if (cnt < n * m + 1) {
		Output(ans);
	}
	else {
		cout << "IMPOSSIBLE" << endl;
	}
	return 0;
}

求DALAO帮帮忙看看我这代码哪里错了啊

2020/10/5 11:47
加载中...