文章目录

  • 一、题目
    • 1、原题链接
    • 2、题目描述
  • 二、解题报告
    • 1、思路分析
    • 2、时间复杂度
    • 3、代码详解
  • 三、知识风暴
  • DFS

一、题目

1、原题链接

排列序数

2、题目描述

如果用 a b c d 这 4 个字母组成一个串,有 4!=24 种,如果把它们排个序,每个串都对应一个序号:

abcd 0

abdc 1

acbd 2

acdb 3

adbc 4

adcb 5

bacd 6

badc 7

bcad 8

bcda 9

bdac 10

bdca 11

cabd 12

cadb 13

cbad 14

cbda 15

cdab 16

cdba 17

⋯ ⋯
现在有不多于 10 个两两不同的小写字母,给出它们组成的串,你能求出该串在所有排列中的序号吗?
输入描述
输入一行,一个串。

输出描述

输出一行,一个整数,表示该串在其字母所有排列生成的串中的序号。注意:最小的序号是 0。

输入输出样例

输入

bdca

输出

11

二、解题报告

1、思路分析

(1)DFS搜索即可,和全排列数思路一样。
(2)至于序号,与我们搜索到的方案数顺序正好相同,直接将每次搜索到的方案数编号,当时第一思路是将每种方案和其编号记录到哈希表中,之后再进行查找,但是有几个数据超时了(时间复杂度最坏10*10!,超过计算机1s计算量)。可以直接搜到输入的方案直接输出,结束程序即可。

2、时间复杂度

时间复杂度O(n*n!)

3、代码详解

#include <iostream>
#include <string>
using namespace std;
const int N=15;
bool st[N];
string s;
int idx,len;
//DFS搜索,和全排列数的搜索方式相同,只不过参数成了字符串
void dfs(int u,string path){//如果找到一组方案if(u==len){//判断是否和输入的字符串相同if(path==s){cout<<idx;   //如果相同,直接输出其编号exit(0);    //结束程序}idx++;        return ;}//搜索,填充每位上的字符for(int i=0;i<len;i++){if(!st[i]){    //如果该位的数字没有被用过char in=char('a'+i),tmp=path[u];path[u]=in;     //将该位置填上数st[i]=true;     //标记为该字母以用过dfs(u+1,path);   //搜索下一个位置st[i]=false;    //回溯path[u]=tmp;    //回溯}}
}
int main()
{  cin>>s;len=s.size();    //记录字符串长度dfs(0,s);   //搜索每种该长度字符串的组合方式return 0;
}

三、知识风暴

DFS

  • 参考这里
  • exit(0):功能—正常运行程序并退出程序,可以用于在非主函数中直接结束程序。

【第十五届蓝桥杯备赛(bushi,写文凑个数)】蓝桥OJ---排列序数相关推荐

  1. 蓝桥杯备赛(五) 双指针,BFS与图论

    蓝桥杯备赛(五) 双指针,BFS与图论 一.双指针 1.Acwing 1238. 日志统计 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有 N 行. 其中每一行的 ...

  2. 蓝桥杯备赛--AcWing 668. 游戏时间2

    文章目录 蓝桥杯备赛--AcWing 668. 游戏时间2 lanqiao备赛系列说明 题目 题目描述 输入格式 输出格式 数据范围 下面进行解法思路的详解(这里提供三种思路及解决方案) 一.直接按照 ...

  3. 【蓝桥杯备赛】历年真题解答+知识点总结

    文章目录 历年真题 算法思维 1. 模拟 1.1日期处理 1.1.1 解法一:win自带的计算器 1.1.2 解法二:Excel+手算 1.1.3 解法三:代码实现 1.2 全排列 1.3 判断回文数 ...

  4. 确定第十五届安徽赛区国赛奖项数量

    ➤ 安徽赛区报名信息 在11月7~9日,安徽赛区第十五届智能车竞赛将在合肥职业技术学院汇心湖校区举.各个组别参赛队伍统计如下: < 序号 学校 四轮 节能 接力 信标 AI(省赛) AI电磁(国 ...

  5. 第十五届全国大学生华东赛赛区开赛啦

    01华东赛区-南京信息工程大学 2020年第十五届全国大学生智能车竞赛,华东赛区分区赛和创意组的国赛,明天即将在南京信息工程大学拉开序幕.紧张而又刺激的比赛即将开始,现在各参赛队已经齐聚南京,共争各组 ...

  6. 蓝桥杯备赛(网站推荐和一些资料)

    - 首先我唠叨两句,自己对于蓝桥杯的看法 有很多人说,蓝桥杯300报名费会不会太贵了,他们甚至直接称之为"圈钱杯",(可以参加校赛,然后学校付钱)这点我不做过多评论,毕竟事实摆在那 ...

  7. 蓝桥杯备赛 | 官方题库基础练习(含VIP试题)试题+答案(共33题)

    引言 最近在进行蓝桥杯python组的备赛学习,做了官方题库中的基础练习,包括VIP题库,下面是所有试题和AC代码,所有代码都已经通过测试(VIP试题的测试方法见https://blog.csdn.n ...

  8. 2023年第十五届电工杯数学建模A题B题思路汇总

    文章目录 0 赛题思路 1 竞赛信息 2 竞赛时间 3 组织机构 4 建模常见问题类型 4.1 分类问题 4.2 优化问题 4.3 预测问题 4.4 评价问题 0 赛题思路 (赛题出来以后第一时间在C ...

  9. 2023第十五届电工杯数学建模AB题思路模型

    文章目录 0 赛题思路 1 竞赛信息 2 竞赛时间 3 组织机构 4 建模常见问题类型 4.1 分类问题 4.2 优化问题 4.3 预测问题 4.4 评价问题 0 赛题思路 (赛题出来以后第一时间在C ...

  10. 蓝桥杯备赛经验分享---如何拿蓝桥国一?

    好久没有正儿八经地写过博客了,今天分享一些自己学习算法的一些经验吧(虽然我很菜 !(OvO)!) step1: 1.你已经有一定的语言基础了,最好对C++/java语法比较熟悉: 2.可以较为熟练地使 ...

最新文章

  1. 神探Sherlock如何用AI破案?教你在Excel中搭建一个人脸识别CNN网络
  2. C# WinForm DataGridView单击选中一整行,只能单选
  3. 树莓派debian配置lamp【解决apache不显示php】
  4. Java如何实现文件拷贝操作和如何正确关闭资源
  5. java 强制转换 效率_Java 性能优化:35 个小细节,让你提升 Java 代码的运行效率...
  6. KVM的安装和配置命令详解
  7. python从入门到实践答案第四章_《python从入门到实践》--第四章基本操作列表 重点及课后练习...
  8. Dynamic Wallpaper for Mac视频动态壁纸
  9. windows service in vs
  10. oracle表中多个字段同时和另一个表中关联解决办法
  11. python按字节读文件-使用Python进行二进制文件读写(转)
  12. 数据分析中的常用数学模型实战教程笔记(上)
  13. 移动互联网产品数据分析
  14. c语言null是什么意思,c语言null什么意思?
  15. 谷歌2018年IO大会
  16. ROS编译C++文件过程出现 error: expected unqualified-id before ‘.’ token
  17. 管理经济学的大作业——边际效应分析在学习生活中的应用
  18. gethostbyname和gethostbyaddr
  19. 【web前端(九)】html_行高设置
  20. 搭载地平线征程2芯片的长安UNI-V正式亮相;美通社再度成为国际消费类电子产品展官方合作伙伴 | 全球TMT...

热门文章

  1. RepLKNet:Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs
  2. 小赢卡贷骚扰的简单解决方法
  3. 手把手教系列之梳状滤波器设计实现
  4. win10安装.Net FrameWork无法找到源文件问题
  5. linux创建虚拟网卡vnet,Qemu之Network Device全虚拟方案二:虚拟网卡的创建
  6. 科创板和创业板股票字母N、U、W、V分别代表什么含义?上证和深证股票字幕N,ST,*ST,G,XD,XR,DR,S的含义?
  7. 九连环的递归算法,九连环算法(第2版)
  8. 一键收藏:OEE / TEEP / 六大损失 / SMED / 约束理论 / 持续改进 / 短间隔控制
  9. Socket搭建即时通讯服务器
  10. 亚马逊云科技与黑莓扩大合作,将BlackBerry QNX基础软件迁移上云