SSLOJ 1374 谷仓的安保

  • Description--
  • Input--
  • Output--
  • Sample Input--
  • Sample Output--
  • 说明--
  • 解题思路--
  • 代码--

Description–

Farmer John给谷仓安装了一个新的安全系统,并且要给牛群中的每一个奶牛分配一个有效的密码。一个有效的密码由L个小写字母(来自传统的拉丁字母集’a’…‘z’)组成,至少有一个元音(‘a’, ‘e’, ‘i’, ‘o’, 或 ‘u’)和两个辅音(除去元音以外的音节),并且是按字母表顺序出现的(例如,'abc’是有效的,而’bac’不是) 。
给定一个期望长度L和C个小写字母,写一个程序,打印出所有的长度为L、能由这给定的C个字母组成的有效密码。密码必须按字母表顺序打印出来,一行一个。
你的程序只需输出前25,000个有效密码,即使后面还存在有效密码。


Input–

第一行: 两个由空格分开的整数,L和C;
第二行: C个空格分开的小写字母,密码是由这个字母集中的字母来构建的。

Output–

第一至?行: 每一个输出行包括一个长度为L个字符的密码(没有空格)。输出
行必须按照字母顺序排列。如果存在多于25,000个有效密码,你的程序必须在输出25,000个有效密码后停止。


Sample Input–

4 6
a t c i s w

Sample Output–

acis
acit
aciw
acst
acsw
actw
aist
aisw
aitw
astw
cist
cisw
citw
istw

说明–

3 <= L <= 15


解题思路–

把字母从小到大排序 --> dfs枚举组成的字符串 --> 判断 + 输出


代码–

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>using namespace std;int l, c, t, d[30];
bool p[30], pd[30];
char a;bool check(string ss)
{int o = 0, g = 0;for (int i = 0; i < (int)ss.size(); ++i)if (ss[i] == 'a' || ss[i] == 'e' || ss[i] == 'i' || ss[i] == 'o' || ss[i] == 'u') o++;else g++;if (o >= 1 && g >= 2) return 1;return 0;
}void cfy(int lev, string s, int be)
{if (lev > l){if (check(s)) t++, cout << s << endl;if (t >= 25000) exit(0);return ;}for (int i = be; i <= c; ++i)if (!pd[i]){pd[i] = 1;cfy(lev + 1, s + char(d[i] + 96), i + 1);pd[i] = 0;}
}int main()
{scanf("%d%d", &l, &c);for (int i = 1; i <= c; ++i)cin >> a, p[int(a - 96)] = 1;for (int i = 1; i <= 26; ++i)if (p[i]) d[++t] = i; //这是一个垃圾的排序t = 0;cfy(1, "", 1);return 0;
}

SSLOJ·谷仓的安保【DFS】相关推荐

  1. 画出传输门、三态门、开路门_谷仓门优缺点有哪些?安装效果绝对出彩

    随着通信技术的发展,世界之间的距离逐渐缩短,装一网今天给大家介绍的谷仓门就是从国外流传过来的.虽然谷仓门设计来源于国外,但是近几年在国内装修市场也是大受欢迎.谷仓门优缺点有哪些呢?接下来,装一网就为大 ...

  2. 洛谷 P1433 吃奶酪 dfs剪枝

    洛谷 P1433 吃奶酪 dfs剪枝 题解: dfs+剪枝,不过现在好像被卡时间了,第10个点过不了.. 代码如下: #include<iostream> #include<algo ...

  3. 第15关 夫拉姆谷仓地带(难度高!)

    第15关:夫拉姆谷仓地带(难度高!) 培养地狱业火卡   (本关难,第2部boss很难.本关不要给公主宝物,给另外3人宝物. 骑士:方阵快枪(本关的主角!),人鱼寒冰,男主:无.公主:不可以装备,下一 ...

  4. 洛谷 - P1433 - 吃奶酪 - dfs

    https://www.luogu.org/problemnew/show/P1433 并不是每一个求最短距离就是bfs,这个肯定是dfs. 直接计算15!可以知道枚举必定超时,但是! 我们dfs非常 ...

  5. 洛谷 P1958 上学路线-dfs

    输入: 5 4 3 2 2 2 3 4 2 输出: 5 注意点:这题目输入的时候先输入列,再输入行,这点要注意,然后这个图跟我们二维数组是反过来的,所以题目说得向北走要变成向南走,注意一下细节就好了. ...

  6. 洛谷 P1141 01迷宫(dfs)

    https://www.luogu.org/problem/P1141 思路:找到每一个连通块,不同连通块的标记不同,给标记赋值成该连通块的数量 1 // luogu-judger-enable-o2 ...

  7. 洛谷 - P1034 - 矩形覆盖 - dfs

    https://www.luogu.org/problemnew/show/P1034 可能是数据太水了瞎搞都可以过. 判断两个平行于坐标轴的矩形相交(含顶点与边相交)的代码一并附上. 记得这里的xy ...

  8. 洛谷 | P1605 迷宫(DFS) C++

    题目背景 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右四种方式,每次只能移 ...

  9. 洛谷P1605 迷宫(dfs) 题解

    题目来源: 点击打开链接 题目描述: 题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标 ...

最新文章

  1. 演示:标准ACL的配置、及使用技巧、和相关局限
  2. MySQL binlog日志
  3. Overload 和Override 的区别
  4. Linux进程状态如何切换,Linux系统如何切换前台进程和后台进程(2)
  5. CSS过渡属性transitions详细解读——Web前端系列学习笔记
  6. bat 启动 不弹出对话框_CAD中转换出的PDF文件模糊要怎么办
  7. 面向.NET开发人员的Dapr——分布式世界
  8. PyPyODBC 0.9.2发布 - 纯Python实现的pyodbc替代库
  9. Extjs嵌入html
  10. c语言改变cmd 字体大小_嵌入式开发中常见3个的C语言技巧
  11. Fiddler原理~知多少?
  12. matlab的holdoff语句,matlab中holdon和holdoff – 手机爱问
  13. Linux平台升级chrome浏览器后,再打开会提示:“您的个人资料来自新版 Google Chrome 浏览器,因此无法使用。某些功能可能无法使用。请指定其他个人资料目录,或使用新版本”
  14. 实现lightbox效果
  15. python分隔符的使用_使用python处理分隔符
  16. 电脑技术员联盟 GhostXp Sp3 装机版V5.1
  17. linux定制欢迎界面motd,linux 界面 /etc/motd
  18. h61 nvme硬盘_谁更快?PCIe 4.0时代的NVMe固态硬盘性能对决
  19. Java 中 Boolean 和 boolean的默认值和修改默认值
  20. 初探自动化测试(爬虫)框架nightmarenightwatch

热门文章

  1. html存储数据的方法,数据存储方式有哪些
  2. 虚幻引擎学习笔记——Month1 Week1
  3. 查看CUDA,GPU对应计算能力
  4. Diagnostic Viewer 显示空白
  5. Analog circuit----电路耦合、有源/无源滤波电路
  6. 滑动窗口(最大最小值)的经典例题
  7. Infor CloudSuite Industrial (SyteLine) 报告文件存储位置设置
  8. cm-14.1 Android系统定制(二):内置系统应用
  9. 基于Bootstrap的下拉框多选 Bootstrap Multiselect 插件使用
  10. 抖音新号怎么快速涨粉(8种抖音运营吸粉技巧)