递归排列枚举(c++)

news2024/11/13 9:21:26
全部排列问题
输入 n
输出 1…n 个数的全部排列。全部排列中,数字可以重复 。
例如
输入 3
输出全部排列的结果如下:111、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…n 这 n 个数的全部排列情况。
输入复制
2
输出复制
11
12
21
22
#include<bits/stdc++.h>
#include <iostream>
using namespace std;
int a[10] = {0};
void aaa(int,int);
int main()
{
	int n;
	cin>>n;
	aaa(n,0);
	
	return 0;
}
void aaa(int n,int sum)
{
	if(sum>=n)
	{
		for(int i = 0;i<sum;i++)
		{
			cout<<a[i];
		}
		cout<<endl;
		return;
	}
	for(int i = 1;i<=n;i++)
	{
		a[sum] = i;
		aaa(n,sum+1);
	}
	return;
}

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

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 <iomanip>
#include <iostream>
using namespace std;
int a[10] = {0};
int f[10] = {0};
int b[10] = {0};
void aaa(int,int);
int main()
{
	int n;
	cin>>n;
	for(int i = 1;i<=n;i++)
	{
		cin>>b[i];
	}
	aaa(n,0);
	return 0;
}
void aaa(int n,int sum)
{
	if(sum>=n)
	{
		for(int i = 0;i<sum;i++)
		{
			cout<<setw(3)<<a[i]<<" ";
		}
		cout<<endl;
		return;
	}
	for(int i = 1;i<=n;i++)
	{
		if(f[i]==0)
		{
			a[sum] = b[i];
			f[i] = 1;
			aaa(n,sum+1);
			f[i] = 0;
		}
	}
	return;
}

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 <iomanip>
#include <iostream>
using namespace std;
int a[10] = {0};
int f[10] = {0};
int r;
void aaa(int,int);
int main()
{
	int n;
	cin>>n>>r;
	aaa(n,0);
	return 0;
}
void aaa(int n,int sum)
{
	if(sum>=r)
	{
		for(int i = 0;i<sum;i++)
		{
			cout<<setw(3)<<a[i]<<" ";
		}
		cout<<endl;
		return;
	}
	for(int i = 1;i<=n;i++)
	{
		if(f[i]==0)
		{
			a[sum] = i;
			f[i] = 1;
			aaa(n,sum+1);
			f[i] = 0;
		}
	}
	return;
}

三个三位数

描述

将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成 1:2:3的比例,试 求出所有满足条件的三个三位数。

例如:

三个三位数192,384,576满足以上条件。

输入

无。

输出

每行三个三位数,为满足条件的一种方案。这三个三位数按从小到大的方式给出,相邻两个数之间 用单个空格隔开。 请按照第一个三位数从小到大的顺序依次输出每种方案。

#include <iomanip>
#include <iostream>
using namespace std;
int a[10] = {0};
int f[10] = {0};
int b[510] = {0};
int summ = 0;
void aaa(int,int,int);
int main()
{
	
	aaa(9,3,0);
	for(int i = 0;i<summ;i++)
	{
		for(int j = i+1;j<summ;j++)
		{
			for(int k = j+1;k<summ;k++)
			{
				int a1,a2,a3,a11,a22,a33,a111,a222,a333;
				a1 = b[i]/1%10;
				a2 = b[i]/10%10;
				a3 = b[i]/100%10;
				a11 = b[j]/1%10;
				a22 = b[j]/10%10;
				a33 = b[j]/100%10;
				a111 = b[k]/1%10;
				a222 = b[k]/10%10;
				a333 = b[k]/100%10;
				int aa[10] = {0};
				aa[a1]++;
				aa[a2]++;
				aa[a3]++;
				aa[a11]++;
				aa[a22]++;
				aa[a33]++;
				aa[a111]++;
				aa[a222]++;
				aa[a333]++;
				bool f = true;
				for(int i = 1;i<=9;i++)
				{
					if(aa[i]>1)
					{
						f = false;
						break;
					}
				}
				if(f==true)
				{
					if(b[i]*3==b[k]&&b[i]*2==b[j])
					{
						cout<<b[i]<<" "<<b[j]<<" "<<b[k]<<endl;
					}
				}
			}
		}
	}
	
	return 0;
}
void aaa(int n,int r,int sum)
{
	if(sum>=r)
	{
		for(int i = 0;i<sum;i++)
		{
			b[summ] = b[summ]*10+a[i];
		}
		summ++;
		return;
	}
	for(int i = 1;i<=n;i++)
	{
		if(f[i]==0)
		{
			a[sum] = i;
			f[i] = 1;
			aaa(9,3,sum+1);
			f[i] = 0;
		}
	}
	return;
}

特 殊 的 质 数 肋 骨

问 题 描 述

农 民 约 翰 的 母 牛 总 是 产 生 最 好 的 肋 骨 。 你 能 通 过 农 民 约 翰 和 美 国 农 业 部 标 记 在 每 根 肋 骨 上 的 数 字 认 出 它 们 。

农 民 约 翰 确 定 他 卖 给 买 方 的 是 真 正 的 质 数 肋 骨,是 因 为 从 右 边 开 始 切 下 肋 骨,每 次 还 剩 下 的 肋 骨 上 的 数 字 都 组 成 一 个 质 数 。

举 例 来 说:

全部肋骨上 的 数 字 7 3 3 1 是 质 数 ; 三 根 肋 骨 7 3 3 是 质 数 ; 二 根 肋 骨 7 3 是 质 数 ; 当 然,最 后 一 根 肋 骨 7 也 是 质 数 。 7 3 3 1 被 叫 做 长 度 4 的 特 殊 质 数 。

写 一 个 程 序 对 给 定 的 肋 骨 的 数 目 n ,求 出 所 有 的 特 殊 质 数 。 1 不 是 质 数 。

输 入 复 制

4

输 出 复 制

2 3 3 3

2 3 3 9

2 3 9 3

2 3 9 9

2 9 3 9

3 1 1 9

3 1 3 7

3 7 3 3

3 7 3 9

3 7 9 3

3 7 9 7

5 9 3 9

7 1 9 3

7 3 3 1

7 3 3 3

7 3 9 3

#include <iostream>
using namespace std;
int a[10] = {0};
int r;
void aaa(int,int);
bool zhishu(int);
int main()
{
	int n = 9;
	cin>>r;
	aaa(n,0);
	
	return 0;
}
void aaa(int n,int sum)
{
	if(sum>=r)
	{
		int b = 0;
		bool f = true;
		for(int i = 0;i<sum;i++)
		{
			b = b*10+a[i];
			if(zhishu(b)==false)
			{
				f = false;
				break;
			}
		}
		if(f==true) cout<<b<<endl;
		return;
	}
	for(int i = 1;i<=n;i++)
	{
		a[sum] = i;
		aaa(n,sum+1);
	}
	return;
}
bool zhishu(int n)
{
	if(n==1) return false;
	if(n==2) return true;
	for(int i = 2;i<n;i++)
	{
		if(n%i==0) return false;
	}
	return true;
}

谷仓的保安

Farmer John给谷仓安装了一个新的安全系统,并且要给牛群中的每一个奶牛安排一个有效的密码。一个有效的密码 由 L (3≤L≤15)个小写字母(来自传统的拉丁字母集'a'...'z')组成,至少有一个元音('a', 'e', 'i', 'o', 或者 'u'),至少两个辅音 (除去元音以外的音节),并且有按字母表顺序出现的字母(例如,'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 <iomanip>
#include <iostream>
#include <algorithm>
using namespace std;
char a[30] = {'\0'};
int f[30] = {0};
char b[30] = {'\0'};
int cnt  = 0;
int c;
void aaa(int,int);
int main()
{
	int l;
	cin>>l>>c;
	for(int i = 0;i<c;i++)
	{
		cin>>b[i];
	}
	sort(b+0,b+c);
	aaa(l,0);
	
	return 0;
}
void aaa(int l,int sum)
{
	if(sum>=l)
	{
		if(cnt<25000)
		{
			bool fy = false;
			for(int i = 0;i<l;i++)
			{
				if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u')
				{
					fy = true;
					break;
				}
			}
			if(fy==false) return;
			
			
			bool ff = 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')
				{
					cnt2++;
				}
				if(cnt2==2)
				{
					ff = true;
					break;
				}
			}
			if(ff==false) return;
			
			

			bool fyx = true;
			for(int i = 0;i<l-1;i++)
			{
				if(a[i]>a[i+1])
				{
					fyx = false;
					break;
				}
			}
			if(fyx==false) return;
			
			
			
			cnt++;
			for(int i = 0;i<sum;i++)
			{
				cout<<a[i];
			}
			cout<<endl;
		}
		return;
	}
	for(int i = 0;i<c;i++)
	{
		if(f[i]==0)
		{
			a[sum] = b[i];
			f[i] = 1;
			aaa(l,sum+1);
			f[i] = 0;
		}
	}
	return;
}

#include <iostream>
using namespace std;
int a[50];
int f[50];
int cnt;
void aaa(int,int);
bool zhishu(int);
int main()
{
	int n;
	cin>>n;
	cnt = 0;
	aaa(n,0);
	cout<<"total:"<<cnt;
	return 0;
}
void aaa(int n,int sum)
{
	if(sum>=n)
	{
		if(zhishu(a[n-1]+a[0])==true)
		{
			cnt++;
			cout<<cnt<<":";
			for(int i = 0;i<n;i++)
			{
				cout<<a[i]<<" ";
			}
			cout<<endl;
		}
	}
	for(int i = 1;i<=n;i++)
	{
		if(f[i]==0)
		{
			if(sum==0)
			{
				f[i] = 1;
				a[sum] = i;
				aaa(n,sum+1);
				f[i] = 0;
			}
			else
			{
				if(zhishu(i+a[sum-1])==true)
				{
					f[i] = 1;
					a[sum] = i;
					aaa(n,sum+1);
					f[i] = 0;
				}
			}
		}
	}
	return;
}
bool zhishu(int n)
{
	if(n==1) return false;
	if(n==2) return true;
	for(int i = 2;i<n;i++)
	{
		if(n%i==0) return false;
	}
	return true;
}

素数环2

从1∼n 这 n 个数,摆成一个环,个数字首尾相连,形成一个圆环,要求圆环上任意两个相邻的数字之和 都是一个素数,请编程输出符合条件的素数环。

输入

输入数据仅一行,包含一个正整数 n(n≤20)。

输出

输出数据最多包括 10 行,每行由 n 个整数组成,表示前十个符合条件的素数环(不 足十个时全部输出)。

所有素数环第一个元素必须是 1 ,且按照从小到大的顺序排列。

输入复制

6

输出复制

1 4 3 2 5 6

1 6 5 2 3 4

#include <iostream>
using namespace std;
int a[50];
int f[50];
void aaa(int,int);
bool zhishu(int);
int main()
{
	int n;
	cin>>n;
	aaa(n,0);
	return 0;
}
void aaa(int n,int sum)
{
	if(sum>=n)
	{
		if(zhishu(a[n-1]+a[0])==true&&a[0]==1)
		{
			for(int i = 0;i<n;i++)
			{
				cout<<a[i]<<" ";
			}
			cout<<endl;
		}
	}
	for(int i = 1;i<=n;i++)
	{
		if(f[i]==0)
		{
			if(sum==0)
			{
				f[i] = 1;
				a[sum] = i;
				aaa(n,sum+1);
				f[i] = 0;
			}
			else
			{
				if(zhishu(i+a[sum-1])==true)
				{
					f[i] = 1;
					a[sum] = i;
					aaa(n,sum+1);
					f[i] = 0;
				}
			}
		}
	}
	return;
}
bool zhishu(int n)
{
	if(n==1) return false;
	if(n==2) return true;
	for(int i = 2;i<n;i++)
	{
		if(n%i==0) return false;
	}
	return true;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

红外接收器的原理以及在STM32和51单片机中的应用

基本介绍&#xff1a; 红外接收器是一种用于接收红外线信号的装置&#xff0c;常见于各种电子设备中&#xff0c;如电视遥控器、空调遥控器等。它能够接收来自发射器发送的红外信号&#xff0c;并将其转换成电信号&#xff0c;以便设备进行相应的操作。红外接收器通常包含红外光…

C语言语法进阶

条件运算符 条件运算符是 C 语言中唯一的一种三目运算符。三目运算符代表有三个操作数&#xff1b;双目 运算符代表有两个操作数&#xff0c;如逻辑与运算符就是双目运算符&#xff1b;单目运算符代表有一个操作数&#xff0c; 如逻辑非运算符就是单目运算符。运算符也称操作符…

亚马逊---设计安全架构

会从以下三个方面展开&#xff1a; 1、AWS资源访问安全 2、应用程序负载的网络安全 3、云中数据的安全 责任共担模式 就像租房子&#xff08;房东和你的责任&#xff09; AWS资源访问安全 需要掌握以下几点&#xff1a; 1、跨多个账户的访问控制和管理 2、AWS联合访问和身份服…

探索RadSystems:低代码开发的新选择(一)

文章目录 前言一、名词解释1、低代码开发是什么&#xff1f;2、RadSystems Studio是什么&#xff1f; 二、操作步骤1.下载安装2.启动项目 总结 前言 在数字化时代&#xff0c;低代码开发平台成为越来越多企业的首选&#xff0c;因为它们可以大大加速应用程序的开发过程&#x…

ssm068海鲜自助餐厅系统+vue

海鲜自助餐厅系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管…

医学图像分割入门-FCN理论与实践

FCN&#xff08;全卷积神经网络&#xff09; 引言 全卷积网络&#xff08;Fully Convolutional Network&#xff0c;简称FCN&#xff09;是一种深度学习模型&#xff0c;专门设计用于图像分割任务。相比于传统的基于全连接层的神经网络&#xff0c;FCN可以接受任意尺寸的输入…

Llama 3 实测效果炸裂,一秒写数百字(附镜像站)

这几天大火的llama 3刚刚在https://askmanyai.cn上线了&#xff01; 玩了一会儿&#xff0c;这个生成速度是真的亚麻呆住。文案写作和代码生成直接爽到起飞&#xff0c;以往gpt要写一两分钟的千字文&#xff0c;llama 3几秒钟就写完了。而且效果甚至感觉更好&#xff1f; 效果惊…

前端表单input的简单使用

1.代码结构介绍 2.实战效果

GARTNER纵横四海 – 2023年LCAP魔力象限图(Magic Quadrant)上各上榜者优势和注意事项

低代码应用平台&#xff08;LCAP-low code application platform&#xff09;通过抽象通用可重复使用软件组件的编码&#xff0c;并将开发人员的工作分配给更接近业务成果的任务&#xff0c;来加速应用程序开发。利用这项研究来比较和对比全球LCAP市场上的上榜企业。 一、市场…

Vitis HLS 学习笔记--HLS优化指令示例-目录

目录 1. 示例集合概述 2. 内容分析 2.1 array_partition 2.2 bind_op_storage 2.3 burst_rw 2.4 critical_path 2.5 custom_datatype 2.6 dataflow_stream 2.7 dataflow_stream_array 2.8 dependence_inter 2.9 gmem_2banks 2.10 kernel_chain 2.11 lmem_2rw 2.1…

【多线程】常见的锁策略 | 乐观锁 | 轻量级锁 | 重量级锁 | 自旋锁 | 挂起等待锁 | 读写锁 | 可重入锁 | 公平锁

文章目录 一、常见的锁策略1.乐观锁 和 悲观锁&#xff08;预测锁冲突的概率&#xff09;2.轻量级锁 和 重量级锁 &#xff08;实际消耗的开销&#xff09;3.自旋锁 和 挂起等待锁自旋锁&#xff08;Spin Lock&#xff09;挂起等待锁 4.读写锁标准库中读写锁的实现 5.可重入锁 …

大话设计模式-依赖倒转原则

依赖倒转原则 在大话设计模式这本书中&#xff0c;作者通过电话修电脑这个例子引入了面向对象设计的基本原则之一&#xff1a;依赖倒转原则。 概念 依赖倒转原则是面向对象设计的基本原则之一&#xff0c;它用于减少类之间的耦合&#xff0c;提高系统的灵活性和可维护性。在…

基于stm32的UART高效接收DMA+IDLE编程示例

目录 基于stm32的UART高效接收DMAIDLE编程示例实验目的场景使用原理图UART的三种编程方式IDLE程序设计串口配置配置中断配置DMA代码片段本文中使用的测试工程 基于stm32的UART高效接收DMAIDLE编程示例 本文目标&#xff1a;基于stm32_h5的freertos编程示例 按照本文的描述&am…

Linux服务器运维工具箱 监控管理建站一个脚本全搞定!

Linux服务器运维工具箱 监控管理建站一个脚本全搞定&#xff01; 一款全能脚本工具箱&#xff0c;使用shell脚本编写。专为Linux服务器监控、测试和管理而设计。无论您是初学者还是经验丰富的用户&#xff0c;该工具都能为您提供便捷的解决方案。集成了独创的Docker管理功能&a…

智慧社区整体解决方案(PPT)

1、背景与现状分析 2、解决方案 3、功能及应用场景介绍 软件资料清单列表部分文档&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0c;用户需求…

YOLOv9改进策略 | Conv篇 | 利用YOLO-MS的MSBlock二次创新RepNCSPELAN4(全网独家创新)

一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块)&#xff0c;我们将其用于RepNCSPELAN中组合出一种新的结构&#xff0c;来替换我们网络中的模块可以达到一种轻量化的作用&#xff…

Flutter MQTT通信(实现聊天功能)

MQTT协议简介&#xff1a; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的、开放的、基于发布/订阅模式的消息传输协议&#xff0c;最初由IBM开发。它专门设计用于在低带宽、不稳定的网络环境下进行高效的消息传输。 学习完本篇文章&#x…

ESP32嵌入式物联网开发实战笔记-C编程基础知识点【doc.yotill.com】

乐鑫ESP32入门到精通项目开发参考百例下载&#xff1a; 链接&#xff1a;百度网盘 请输入提取码 5.1 C 语言基础知识复习 本节我们给大家介绍一下 C 语言基础知识&#xff0c;对于 C 语言比较熟练的开发者&#xff0c;可以跳过此节&#xff0c;对于基础比较薄弱的开发者&…

HCF-Net:用于红外小目标检测的分层上下文融合网络

摘要 红外小目标检测是一项重要的计算机视觉任务&#xff0c;涉及在红外图像中识别和定位微小物体&#xff0c;这些物体通常仅包含几个像素。然而&#xff0c;由于物体尺寸极小以及红外图像中通常复杂的背景&#xff0c;这项任务面临困难。在本文中&#xff0c;我们提出了一种…

40.Vue 应用

Vue 应用 应用实例 每个 Vue 应用都是通过 createApp函数创建一个新的 应用实例 import { createApp } from vueconst app createApp({/* 根组件选项 */ })根组件 我们传入 createApp 的对象实际上是一个组件&#xff0c;每个应用都需要一个“根组件”&#xff0c;其他组件…