
思路:首先需要一个判断条件的函数,然后就是爆搜
代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int n,m,t;
char wd[N];//用来存储输出的字符
char ab[N];//用来存储所有的字符
bool f[N];//判断这个字符是否背使用过
bool func(char ch[],int len){
int ans = 0,cnt = 0;
for(int i=0;i<len;++i){
if(ch[i] == 'a'||ch[i] == 'e'||ch[i] == 'i'||ch[i] == 'o'||ch[i] == 'u'){
++ans;
}else cnt++;
}
if(ans<1||cnt<2)return 0;
else return 1;
}//用来判断是否满足题目条件
void dfs(int k,int j){
if(k == m){
if(func(wd,m)){
for(int i=0;i<m;++i){
cout<<wd[i];
}cout<<endl;
}
return ;
}
for (int i = j; i < n; ++i) {
if(!f[i]){
f[i] = 1;
wd[k] = ab[i];
dfs(k+1,i+1);//这里可以让我们不出现重复的情况

该博客探讨了一种使用深度优先搜索算法解决谷仓安保问题的思路。通过建立判断条件函数并进行爆搜,可以有效地找到解决方案。
最低0.47元/天 解锁文章
889





