AcWing 116. 飞行员兄弟
原题链接
简单
作者:
岩_0
,
2025-03-15 11:53:19
· 江苏
,
所有人可见
,
阅读 1
y总代码注释版
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
int change[4][4];
int get(int x, int y)
{
return x * 4 + y;
}
int main()
{
for (int i = 0; i < 4; i ++)
{
for (int j = 0; j < 4; j ++)
{
for (int k = 0; k < 4; k ++)
{
change[i][j] += (1 << get(i, k)) + (1 << get(k, j));
}
change[i][j] -= 1 << get(i, j);
}
}
int state = 0;
for (int i = 0; i < 4; i ++)
{
string line;
cin >> line;
for (int j = 0; j < 4; j ++)
{
if (line[j] == '+')
state += 1 << get(i, j);
}
}
vector <PII> path, temp;
for (int i = 0; i < 1 <<16; i ++)
{
int now = state;
temp.clear();
for (int j = 0; j < 16; j ++)
{
if (i >> j & 1)
{
int x = i / 4, y = j % 4;
now ^= change[i][j];
temp.push_back({x, y});
}
}
if (!now && (path.empty() || path.size() > temp.size())) path = temp;
}
cout << path.size() << endl;
for (auto &e : path)
{
cout << e.first << ' ' << e.second << endl;
}
return 0;
}
#include [HTML_REMOVED]