题意
给出一些字符,求出由它们组成长度为lll的字符串,并且满足题中给出的条件。
思路
由于数据较小,暴搜即可。
代码
#include<cstdio>
#include<iostream>
#include<algorithm>
int l, c, cnt;
int a[27], v[27], s[27];
char ch;
void dfs(int dep, int len) {
if (dep > c || cnt == 25000) return;
if (len == l) {
int f = v[1] + v[5] + v[9] + v[15] + v[21];
if (l - f >= 2 && f >= 1) {
cnt++;
for (int i = 1; i <= len; i++)
putchar(s[i] + 96);
putchar(10);
}
return;
}
v[a[dep + 1]] = 1;
s[len + 1] = a[dep + 1];
dfs(dep + 1, len + 1);
v[a[dep + 1]] = 0;
s[len + 1] = 0;
dfs(dep + 1, len);
}
int main() {
scanf("%d %d", &l, &c);
for (int i = 1; i <= c; i++) {
std::cin >> ch;
a[i] = ch - 96;
}
std::sort(a + 1, a + c + 1);
dfs(0, 0);
}