排列类枚举(递归)

全部排列问题

题目描述:输出 1…n 个数的全部排列。全部排列中,数字可以重复 。 例如输入 3 输出全部排列的结果如下:1

11、112、113、121、122、123、131、132、133、211、212、213、221、 222、223、231、232、233、311、312、313、321、322、323、331、332、333。

输入 一个整数 n(1<=n<=6) 输出 1按照由小到大的顺序输出 1…n 这 n 个数的全部排列情况。

输入复制

2

输出复制

11

12

21

22

#include<bits/stdc++.h>
using namespace std;
void func(int,int);
int a[110]={0};
int main()
{
	int n;
	cin>>n;
	func(n,0);
	
	
	return 0;
}
void func(int n,int k)
{
	if(k>=n)
	{
		for(int i=0;i<k;i++)cout<<a[i];
		cout<<endl;
		return;
	}
	for(int i=1;i<=n;i++)
	{
		a[k]=i;
		func(n,k+1);
	}
}

全排列的结果

题目描述:从键盘读入一个整数 n,请输出 1∼n 中所有整数的全排列,按照由小到大输出结果,每组的 n 个数之 间用空格隔开。

全排列的含义:从 n 个不同元素中任取 m (m≤n)个元素,按照一定的顺序排列起来,叫做从 n 个 不同元素中取出 m 个元素的一个排列。当 m=n 时所有的排列情况叫全排列。

如当 n=3 时,全排列的结果为:

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

输入 一个整数 n(≤1≤n≤6); 输出 1∼n 中所有数的全排列的结果,按照由小到大输出,每行 n 个数。

#include<bits/stdc++.h>
using namespace std;
void func(int,int);
int a[110]={0};
int b[110]={0};
int main()
{
	int n;
	cin>>n;
	func(n,0);
	
	return 0;
}
void func(int n,int k)
{
	if(k>=n)
	{
		for(int i=0;i<k;i++)cout<<a[i]<<" ";
		cout<<endl;
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(b[i]==0)
		{
			a[k]=i;
			b[i]=1;
			func(n,k+1);
			b[i]=0;
		}
	}
}

n个数的全排列

题目描述: 从键盘读入 n 个整数(每个数都是 1∼9 之间的数),输出这 n 个整数的全排列(数字不能 重复)。 输入 第 1 行输入一个整数 n。(1≤n≤8) 第 2 行输入 n 个不相等的整数。(每个数在 [1,9] 的范围内) 输出 输出若干行,每行包括 n 个数据,表示一种排列方案,所有的排列按字典码从 小到大排序输出。 样例

输入复制

3

4 6 2

输出复制

2 4 6

2 6 4

4 2 6

4 6 2

6 2 4

6 4 2

#include<bits/stdc++.h>
using namespace std;
void func(int,int);
int a[110]={0};
int b[110]={0};
int c[110]={0};
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>b[i];
	}
	func(n,0);
	
	
	return 0;
}
void func(int n,int k)
{
	if(k>=n)
	{
		for(int i=0;i<k;i++)cout<<a[i]<<" ";
		cout<<endl;
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(b[i]==0)
		{
			a[k]=c[i];
			b[i]=1;
			func(n,k+1);
			b[i]=0;
		}
	}
}

n个数取出r个数排列

题目描述:从 1∼n 任意挑出 r 个数进行排列,请从小到 大输出所有可能的排列结果。

如:n=5,r=2,则输出结果如下

1 2

1 3

1 4

1 5

2 1

2 3

2 4

2 5

3 1

3 2

3 4

3 5

4 1

4 2

4 3

4 5

5 1

5 2

5 3

5 4 

输入 两个整数 n 和 r ( n 和 r 都是 3∼6 之间的整数) 输出 从 1∼n 中取出 r 个数的排列结果!

#include<bits/stdc++.h>
using namespace std;
void func(int,int);
int a[110]={0};
int b[110]={0};
int r;
int main()
{
	int n;
	cin>>n>>r;
	func(n,0);
	
	
	return 0;
}
void func(int n,int k)
{
	if(k>=r)
	{
		for(int i=0;i<k;i++)cout<<a[i]<<" ";
		cout<<endl;
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(b[i]==0)
		{
			a[k]=i;
			b[i]=1;
			func(n,k+1);
			b[i]=0;
		}
	}
}

谷仓的保安

题目描述:Farmer John给谷仓安装了一个新的安全系统,并且要给牛群中的每一个奶牛安排一个有效的密码。

组成一个有效的密码要遵守以下条件:

1.由 L (3≤L≤15)个小写字母(来自传统的拉丁字母集'a'...'z')组成。

2.至少有一个元音('a', 'e', 'i', 'o', 'u')。

3.至少两个辅音 (除去元音以外的音节)。

4.有按字母表顺序出现的字母(例如,'abc'是有效的,而'bac'不是) 。

给定一个期望长度 L 和 C 个小写字母,写一个程序,打印出所有的长度为 L、能由这些字母组成的有效密码。密码必须按字母表顺序打印出来,一行一个。 输入 第一行: 两个由空格分开的整数,L 和 C 。(3≤C≤26) 第二行: C 个空格分开的小写字母,密码是由这个字母集中 的字母来构建的。 输出 输出若干行,每一个输出行包括一个长度为 L 个字符的密 码(没有空格)。输出行必须按照字母顺序排列。 如果计算出超过 25000 个有效密码,你的程序只需输出前 25000 个有效密码,即使后面还存在有效密码。

输入复制

4 6

a t c i s w

输出复制

acis

acit

aciw

acst

acsw

actw

aist

aisw

aitw

astw

cist

cisw

citw

istw

#include<bits/stdc++.h>
using namespace std;
void func(int,int);
char a[110]={'\0'};
int b[110]={0};
char c[110]={'\0'};
int cnt=0;
int s;
int main()
{
	int l;
	cin>>l>>s;
	for(int i=0;i<s;i++)
	{
		cin>>c[i];
	}
	sort(c+0,c+s);//把此数组按字典顺序重新排列 
	func(l,0);
	
	
	return 0;
}
void func(int l,int k)
{
	if(k>=l)
	{
		if(cnt<25000)
		{
			cnt++;
			bool sss=false;
			int cnt2=0;
			for(int i=0;i<l;i++)
			{
				if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u')sss=true;
				else cnt2++;
				if(a[i]>a[i+1]&&i+1<l)
				{
					sss=false;
					break;
				}
				if(cnt2>=2&&sss==true)break;
			}
			if(sss==false||cnt2<2)return;
			for(int i=0;i<k;i++)cout<<a[i];
			cout<<endl;
		}
		return;
	}
	for(int i=0;i<s;i++)
	{
		if(b[i]==0)
		{
			a[k]=c[i];
			b[i]=1;
			func(l,k+1);
			b[i]=0;
		}
	}
	return;
}

三个三位数

题目描述: 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成 1:2:3的比例,试 求出所有满足条件的三个三位数。 例如:三个三位数192,384,576满足以上条件。 输入 无。 输出 每行三个三位数,为满足条件的一种方案。这三个三位数按从小到大的方式给出,相邻两个数之间 用单个空格隔开。 请按照第一个三位数从小到大的顺序依次输出每种方案

#include<bits/stdc++.h>
using namespace std;
void func(int,int);
int a[110]={1,2,3,4,5,6,7,8,9};
int b[110]={0};
bool c[110];
int main()
{
	func(9,0);
	
	
	return 0;
}
void func(int n,int k)
{
	if(k>n-1)
	{
		int aaa=b[0]*100+b[1]*10+b[2];
	    int bbb=b[3]*100+b[4]*10+b[5];
	    int ccc=b[6]*100+b[7]*10+b[8];
	    if(aaa*2==bbb&&aaa*3==ccc)cout<<aaa<<" "<<bbb<<" "<<ccc<<endl;
	    return;
	}
	for(int i=1;i<=9;i++)
	{
		if(c[i]==0)
		{
			c[i]=1;
			b[k]=i;
			func(n,k+1);
			c[i]=0;
		}
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/568607.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

html接入腾讯地图

1.申请key key申请地址&#xff1a;https://lbs.qq.com/dev/console/application/mine 官方文档 https://lbs.qq.com/webApi/javascriptGL/glGuide/glBasic 2.html接入示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"U…

全国青少年劳动技能与智能设计大赛安徽省赛——庐江县师资培训活动圆满举行

为贯彻落实科教兴国的国家战略目标&#xff0c;根据《教育部办公厅关于公布 2022—2025 学年面向中小学生的全国性竞赛活动》的相关通知。为了提升教师在劳动技能与智能设计领域的教学与指导能力&#xff0c;为即将到来的省级大赛做好充分准备。4月18日&#xff0c;一场由庐江县…

维基百科、百度百科和搜狗百科词条的创建流程

随着网络的发展&#xff0c;百度百科、搜狗百科、维基百科等百科网站已经成为大众获取知识的重要途径。因为百科具有得天独厚的平台优势&#xff0c;百科上的信息可信度高&#xff0c;权威性强。所以百科平台也成为商家的必争之地。这里小马识途聊聊如何创建百度百科、搜狗百科…

GPT与GAN结合生成图像——VQGAN原理解析

1、前言 这篇文章&#xff0c;我们讲VQ_GAN&#xff0c;这是一个将特征向量离散化的模型&#xff0c;其效果相当不错&#xff0c;搭配Transformer&#xff08;GPT&#xff09;或者CLIP使用&#xff0c;达到的效果在当时可谓是令人拍案叫绝&#xff01; 原论文&#xff1a;Tam…

LTD271次升级 | 网站/小程序可设访问IP的黑白名单 • 官微中心支持PDF等办公文件预览与并分享 • 订单退款显示更详尽明细

1、新增IP访问限制功能&#xff1b; 2、订单新增交易号显示与退款明细显示&#xff1b; 3、自定义地址增加四级地区&#xff1b; 4、Android版App优化文件功能&#xff1b; 5、已知问题修复与优化&#xff1b; 01 官微中心 1) 新增IP限制访问功能 允许或者禁止某些 IP 或…

uniapp项目中禁止横屏 ,app不要自动旋转 -,保持竖屏,uniapp取消重力感应

uniapp项目中禁止横屏 &#xff0c;app不要自动旋转 -&#xff0c;保持竖屏&#xff0c;uniapp取消重力感应 1.适用于移动端&#xff0c;安卓和IOS&#xff0c;当即使手机打开了自动旋转的按钮&#xff0c;设置如下的代码后&#xff0c;页面依旧保持竖屏。 步骤一&#xff1a…

【深度学习】yolo-World,数据标注,zeroshot,目标检测

仓库&#xff1a;https://github.com/AILab-CVC/YOLO-World 下载权重&#xff1a; 仓库下载和环境设置 下载仓库&#xff1a;使用以下命令从 GitHub 上克隆仓库&#xff1a; git clone --recursive https://github.com/AILab-CVC/YOLO-World.git创建并激活环境&#xff1a…

程序猿成长之路之数据挖掘篇——朴素贝叶斯

朴素贝叶斯是数据挖掘分类的基础&#xff0c;本篇文章将介绍一下朴素贝叶斯算法 情景再现 以挑选西瓜为例&#xff0c;西瓜的色泽、瓜蒂、敲响声音、触感、脐部等特征都会影响到西瓜的好坏。那么我们怎么样可以挑选出一个好的西瓜呢&#xff1f; 分析过程 既然挑选西瓜有多个…

DaPy:实现数据分析与处理

DaPy&#xff1a;实现数据分析与处理 DaPy是一个用于数据分析和处理的Python库&#xff0c;它提供了一系列强大的工具和功能&#xff0c;使开发者能够高效地进行数据清洗、转换和分析。本文将深入解析DaPy库的特点、功能以及使用示例&#xff0c;帮助读者了解如何利用DaPy库处理…

贪心算法在单位时间任务调度问题中的应用

贪心算法在单位时间任务调度问题中的应用 一、引言二、问题描述与算法设计三、算法证明四、算法实现与效率分析五、C语言实现示例六、结论 一、引言 单位时间任务调度问题是一类经典的优化问题&#xff0c;旨在分配任务到不同的时间槽中&#xff0c;使得某种性能指标达到最优。…

【QT进阶】Qt http编程之实现websocket server服务器端

往期回顾 【QT进阶】Qt http编程之json解析的简单介绍-CSDN博客 【QT进阶】Qt http编程之nlohmann json库使用的简单介绍-CSDN博客 【QT进阶】Qt http编程之websocket的简单介绍-CSDN博客 【QT进阶】Qt http编程之实现websocket server服务器端 一、最终效果 通过ip地址和端口…

万界星空科技电机行业MES+商业电机行业开源MES+项目合作

要得出mes系统解决方案在机电行业的应用范围&#xff0c;我们先来看一下传统机电行业的管理难题&#xff1a; 1、 产品标准化程度较低&#xff0c;制造工艺复杂&#xff0c;生产周期较长&#xff0c;产品质量不稳定&#xff1b; 2、 自动化程度低&#xff0c;大多数工序以手工…

【视频异常检测】Open-Vocabulary Video Anomaly Detection 论文阅读

Open-Vocabulary Video Anomaly Detection 论文阅读 AbstractMethod3.1. Overall Framework3.2. Temporal Adapter Module3.3. Semantic Knowledge Injection Module3.4. Novel Anomaly Synthesis Module3.5. Objective Functions3.5.1 Training stage without pseudo anomaly …

电子信息制造工厂5G智能制造数字孪生可视化平台,推进数字化转型

电子信息制造工厂5G智能制造数字孪生可视化平台&#xff0c;推进数字化转型。5G智能制造数字孪生可视化平台利用5G网络的高速、低延迟特性&#xff0c;结合数字孪生技术和可视化界面&#xff0c;为电子信息制造工厂提供了一种全新的生产管理模式。不仅提升生产效率&#xff0c;…

设计模式(三):抽象工厂模式

设计模式&#xff08;三&#xff09;&#xff1a;抽象工厂模式 1. 抽象工厂模式的介绍2. 抽象工厂模式的类图3. 抽象工厂模式的实现3.1 创建摩托车的接口3.2 创建摩托车的具体实现3.3 创建汽车的接口3.4 创建汽车的具体产品3.5 创建抽象工厂3.6 创建具体工厂3.7 创建工厂生成器…

Fisher判别示例:鸢尾花(iris)数据(R)

先读取iris数据&#xff0c;再用程序包MASS&#xff08;记得要在使用MASS前下载好该程序包&#xff09;中的线性函数lda()作判别分析&#xff1a; data(iris) #读入数据 iris #展示数据 attach(iris) #用变量名绑定对应数据 library(MASS) #加载MASS程序包 ldlda(Species~…

《ElementPlus 与 ElementUI 差异集合》el-select 显示下拉列表在 Cesium 场景中无法监听关闭

前言 仅在 Element UI 时有此问题&#xff0c;Element Plus 由于内部结构差异较大&#xff0c;不存在此问题。详见《el-select 差异点&#xff0c;如&#xff1a;高、宽、body插入等》&#xff1b; 问题 点击空白处&#xff0c;下拉列表可监听并关闭&#xff1b;但在 Cesium…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别 一、简单介绍 二、简单进行车牌检测和识别实现原理 …

鸿蒙(HarmonyOS)性能优化实战-Swiper高性能开发

背景 在应用开发中&#xff0c;Swiper 组件常用于翻页场景&#xff0c;比如&#xff1a;桌面、图库等应用。Swiper 组件滑动切换页面时&#xff0c;基于按需加载原则通常会在下一个页面将要显示时才对该页面进行加载和布局绘制&#xff0c;这个过程包括&#xff1a; 如果该页面…

解决VSCode中“#include错误,请更新includePath“问题

目录 1、问题原因 2、解决办法 1、问题原因 在编写C程序时&#xff0c;想引用头文件但是出现如下提示&#xff1a; &#xff08;1&#xff09;首先检查要引用的头文件是否存在&#xff0c;位于哪里。 &#xff08;2&#xff09;如果头文件存在&#xff0c;在编译时提醒VSCo…
最新文章