[ABC302C] Almost Equal
由于 ,所以可以考虑 暴力枚举全排列,并且依次计算是否满足题意要求。
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <set>
#include <map>
#include <unordered_map>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <cstdlib>
#include <string>
using namespace std;
#define ll long long
const int N = 2e5 + 5, INF = 2e9, MOD = 1e9 + 7;
inline int read()
{
int op = 1, x = 0;
char ch = getchar();
while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
while (ch == '-')
{
op = -op;
ch = getchar();
}
while (ch >= '0' and ch <= '9')
{
x = (x << 1) + (x << 3) + (ch ^ 48);
ch = getchar();
}
return x * op;
}
inline void write(int x)
{
if (x < 0) putchar('-'), x = -x;
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
int n, m, t;
string s[9];
int cntdif(string x, string y)
{
int cnt = 0;
for (int i = 0; i < m; i++)
{
if (x[i] != y[i]) cnt++;
}
return cnt;
}
int main()
{
// freopen("*.in", "r", stdin);
// freopen("*.out", "w", stdout);
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> s[i];
}
sort(s + 1, s + n + 1);
do
{
bool f = 1;
for (int i = 1; i < n; i++)
{
if (cntdif(s[i], s[i + 1]) != 1)
{
f = 0;
break;
}
}
if (f)
{
printf("Yes\n");
return 0;
}
} while (next_permutation(s + 1, s + n + 1));
printf("No\n");
return 0;
}

浙公网安备 33010602011771号