社区讨论
求助求助我正反字典序都85
P1985[USACO07OPEN] 翻转棋 Fliptile S参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lod6ewpg
- 此快照首次捕获于
- 2023/10/31 01:30 2 年前
- 此快照最后确认于
- 2023/11/05 11:58 2 年前
为啥字典序正反我都WA 3 4啊好气哦
CPP#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帮帮忙看看我这代码哪里错了啊
回复
共 3 条回复,欢迎继续交流。
正在加载回复...