IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 蓝桥杯第五届国赛B组排列序数(c语言) -> 正文阅读

[C++知识库]蓝桥杯第五届国赛B组排列序数(c语言)

资源限制

时间限制:1.0s ? 内存限制:256.0MB

  如果用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

  再例如:

输入格式

  cedab

  程序应该输出:
  70

  资源约定:
  峰值内存消耗 < 256M
  CPU消耗 < 1000ms


  请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

  所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

  注意: main函数需要返回0
  注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
  注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。

  提交时,注意选择所期望的编译器类型。

其实这道题第一眼看过去以为是字典排序,其实认真观察一下就可以看出是字母的全排列,那么能想到这,这道题就简单多了,只不过还要注意一些小细节啦~~

#include<stdio.h>
#include<string.h>
char str[20],str1[20],a[25];  //用str来记录本身需要输入的字符串,str1用来全排列判断啥时候可以排列到str,数组a用来存字符串数组abcd...// 
int b[25],length,flag=0;     //b用来全排列时回溯用,length记录字符串的长度,flag记录目标字符串出现的位置// 
void dfs(int step)
{
	if(step==length)
	{
		if(strcmp(str,str1)==0) //比较当前全排列的字符串和目标字符串是否相等// 
		{
			printf("%d",flag);
		}
		flag++;               //不相等就+1,题目是从0开始记录的,所以在这里咱们也从0开始记录// 
		return;
	}
	for(int i=0; i<length; i++)
	{
		if(b[i]==1)              //这里就是正常的全排列过程// 
		{
			b[i]=0;
			str1[step]=a[i];
			dfs(step+1);
			b[i]=1;
		}
	}
	return;
}
int main()
{
	gets(str);                //用gets输入该字符串是为了不讲回车换行符合输入进去,以免判断的时候比较麻烦// 
	length=strlen(str);
	for(int i=0; i<length; i++)
	{
		a[i]='a'+i;               //将a和b进行初始化// 
		b[i]=1;
	}
	dfs(0);
	return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:05:26  更:2022-03-30 18:06:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:34:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码