题意
给出一些字符,求出由它们组成长度为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);
}
本文介绍了一种使用暴力搜索算法解决特定条件下的字符串生成问题的方法。通过递归深度优先搜索,结合预处理和剪枝策略,有效地生成了满足特定条件的字符串组合。
2824

被折叠的 条评论
为什么被折叠?



