>Description
Farmer John给谷仓安装了一个新的安全系统,并且要给牛群中的每一个奶牛分配一个有效的密码。一个有效的密码由L(3 <= L <= 15)个小写字母(来自传统的拉丁字母集’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个有效密码后停止。


>解题思路

题目大意:

  1. 用m个字母组成长度为n的串
  2. 至少有1个元音,两个辅音
  3. 只能按照字典序排列,按照字典序输出(方案超过25000只输出25000种)

然后看一下数据范围:n<=15,m<=26,直接爆搜


>代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;int n, m, l;
char c[30], ans[30];bool check (char cc)
{if (cc == 'a' || cc == 'e' || cc == 'i' || cc == 'o' || cc == 'u')return 1;return 0;
} //判断元音
void dfs (int len, int now, int f) //len当前长度,now第len个字符的序号,f当前元音数
{if (l >= 25000) exit(0);if (n - f < 2) return; //如果辅音已经少于2个了直接returnif (len == n){if (f >= 1 && n - f >= 2){for (int i = 1; i <= n; i++)putchar (ans[i]);printf ("\n");l++;}return;}for (int i = now + 1; i <= m; i++) //只能按照字典序排列{f += check (c[i]);ans[len + 1] = c[i];dfs (len + 1, i, f);f -= check (c[i]);}
}int main()
{scanf ("%d%d", &n, &m);for (int i = 1; i <= m; i++)cin >> c[i];sort (c + 1, c + 1 + m); //排序使得按照字典序输出dfs (0, 0, 0);return 0;
}

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

  1. SSLOJ·谷仓的安保【DFS】

    SSLOJ 1374 谷仓的安保 Description-- Input-- Output-- Sample Input-- Sample Output-- 说明-- 解题思路-- 代码-- Desc ...

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

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

  3. 洛谷 P1433 吃奶酪 dfs剪枝

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

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

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

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

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

  6. 洛谷 P1958 上学路线-dfs

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

  7. 洛谷 P1141 01迷宫(dfs)

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

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

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

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

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

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

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

最新文章

  1. JDK5中的控制台输入
  2. 项目管理协作软件,打造超强执行力团队!
  3. 解决Ubuntu终端编辑时上下左右变成ABCD问题
  4. TypeScript strictness - 严格语法检查
  5. ssm整合 durid数据源 报错java.sql.SQLException: Access denied for user ‘xxx‘@‘localhost‘
  6. 英雄无敌6服务器在哪个文件夹,Win7系统无法运行英雄无敌6的两种原因和解决方法...
  7. Windows系统镜像、PE系统下载地址大全
  8. Java设计模式鸭子模式_[JS设计模式]:鸭子类型与多态
  9. c++ 头歌实训 第四关 日历打印
  10. 详述 MySQL 中的行级锁、表级锁和页级锁
  11. java开发微信第三方平台 模板消息发送消息案例
  12. 关于网页图标添加shortcut icon与icon
  13. jQuery笔试题汇总整理--2018
  14. 《万能数据库查询分析器》创作人之2014年总结
  15. 如何申请免费的云主机
  16. 为什么要使用 spring?
  17. c语言函数三种方式,c语言函数的三种调用方式是什么
  18. 毕业后来到富士康(南京)软件公司
  19. c语言字符数组篇之6翻了
  20. 安装打印机0X0000007e报错

热门文章

  1. MT6761处理器介绍
  2. filebeat报错:Harvester could not be started on exist file
  3. Frequent Subsets Problem
  4. duet太香啦啦啦啦啦啦啦啦啦啦
  5. JAVA国际化 - Eason Jiang - 博客园
  6. 谈谈数据仓库架构的发展和分类
  7. [Error]The app delegate must implement the window property if it wants to use a main storyboard file
  8. 混淆后出现compiled from: xxx解决
  9. 排水管网信息系统、市政排水管网信息化智慧化管理
  10. Python中的可变对象和不可变对象