递归排列枚举(c++)

全部排列问题
输入 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.mfbz.cn/a/573861.html

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

相关文章

4.18.2 EfficientViT:具有级联组注意力的内存高效Vision Transformer

现有Transformer模型的速度通常受到内存低效操作的限制&#xff0c;尤其是MHSA&#xff08;多头自注意力&#xff09;中的张量整形和逐元素函数。 设计了一种具有三明治布局的新构建块&#xff0c;即在高效FFN&#xff08;前馈&#xff09;层之间使用单个内存绑定的MHSA&#x…

浅谈数据模型

1&#xff1a;事实表和维表的概述 前言&#xff1a;数据仓库是一种用于存储和管理大量数据的技术。其中&#xff0c;事实表和维表是数据仓库中的两个重要概念&#xff0c;首先了解一下事实表和维度表 1.事实表&#xff1a;是指用于存储测量“事实数据”的表&#xff0c;事实数…

Unity 异常 bug

OverlapBoxNonAlloc 使用bug 环境&#xff1a; Unity2021.3.15 在测试场景中使用 OverlapBoxNonAlloc 测试检测没有问题 但是到了真实应用场景&#xff0c;使用 OverlapBoxNonAlloc 检测移动中的小怪 小怪碰撞体为&#xff1a;带有 Rigidbody 的Circle Collider 2D 就会出现异…

Java虚拟机(jvm)常见问题总结

1.电脑怎样认识我们编写的Java代码 首先先了解电脑是二进制的系统&#xff0c;他只认识 01010101比如我们经常要编写 HelloWord.java 电脑是怎么认识运行的HelloWord.java是我们程序员编写的&#xff0c;我们人可以认识&#xff0c;但是电脑不认识 Java文件编译的过程 1. 程…

代码随想录(番外)图论3|1020. 飞地的数量|130. 被围绕的区域

代码随想录&#xff08;番外&#xff09;图论3|1020. 飞地的数量|130. 被围绕的区域 1020. 飞地的数量 class Solution { public:int dir[4][2]{0,1,1,0,0,-1,-1,0};int count;void dfs(vector<vector<int>>& grid,int x,int y){grid[x][y]0;count;for(int i…

大数据开发详解

点击下载《大数据开发详解》 1. 前言 随着信息化时代的快速发展&#xff0c;大数据已经成为了企业和组织不可或缺的重要资源。大数据开发则是指通过一系列技术手段&#xff0c;对海量数据进行收集、存储、处理、分析和挖掘&#xff0c;以实现数据的价值化利用。大数据开发涉及…

哈希表练习题

前言 本次博客将要写一写&#xff0c;哈希表的一些使用 哈希表主要是一个映射&#xff0c;比如数组就是一个哈希表 是一个整型对应另一个整型&#xff0c;介绍的哈希表还是要以写题目为例 第一题 242. 有效的字母异位词 - 力扣&#xff08;LeetCode&#xff09; 直接来看…

C# 给图片添加文字水印

目录 应用场景 开发运行环境 方法说明 方法代码 调用示例 小结 应用场景 在某些应用项目&#xff08;如电子档案信息管理&#xff09;中&#xff0c;查看电子图片信息是经常使用到的功能&#xff0c;此时我们就需要给显示在浏览器中的图片添加文字水印版权或提示信息。…

Java面试八股之Java中==和equals()的区别

Java中和equals()的区别 操作符&#xff1a; 对于基本数据类型&#xff08;如int、char、boolean等&#xff09;&#xff0c;比较的是它们的值是否相等。 对于对象引用类型&#xff0c;比较的是两个对象的内存地址&#xff08;即是否指向同一个对象实例&#xff09;。也就是…

Jetbrains Fleet这十个快捷键,效率提高50倍

当我们无法解决一段感情中的问题 就会选择解决这段感情 如果真诚不得到回应 那么再热情的人 也会沉默 很多人对你感兴趣 却没有人执着于你 我们知道任何一款牛批的IDE 都是有很多快捷键的,但是我们没有superpower ,不能记住所有的快捷键。 所以下面就总结了使用fleet 过…

电磁兼容(EMC):静电放电(ESD)抗扰度试验深度解读(七)

目录 1. 第一步 确定电磁环境 2. 第二步 确认设备工作状态 3. 第三步 制定试验计划 4. 间接施加的放电 4.1 水平耦合板 4.2 垂直耦合板 静电抗扰度的试验测试细节对测试结果影响比较大&#xff0c;本文详细介绍静电抗扰度试验的测试程序和注意事项。 1. 第一步 确定电磁…

PostgreSQL的学习心得和知识总结(一百三十九)|深入理解PostgreSQL数据库GUC参数 allow_alter_system 的使用和原理

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

【学习】​CSMM和CMMI的关系你了解吗

CMMI和CSMM都是评估和提升软件组织能力成熟度的模型&#xff0c;但它们在起源、应用范围、模型结构和实施目的等方面存在一些区别。在当今竞争激烈的软件市场中&#xff0c;提升软件能力成为了多数组织追求成功的关键因素。而选择适合的体系标准能够助力企业发展得更加迅速。作…

企业实施定制鞋厂ERP软件需要注意哪些问题?

企业实施定制鞋厂ERP软件是个复杂的管理系统工程&#xff0c;为了成功地为企业定制实施ERP软件&#xff0c;需要注意和解决几个关键的问题&#xff1a; . 确立ERP系统实施和定制的决策者&#xff1b;. 做好前期咨询与调研工作&#xff1b;. 做好系统产品或项目迭代规划&#x…

【MySQL 数据宝典】【内存结构】- 003 Change Buffer 详解

一、 Change Buffer基本概念 Change Buffer&#xff1a;写缓冲区,是针对二级索引(辅助索引) 页的更新优化措施。 作用: 在进行DML操作时&#xff0c;如果请求的是 辅助索引&#xff08;非唯一键索引&#xff09;没有在缓冲池 中时&#xff0c;并不会立刻将磁盘页加载到缓冲池…

【Qt】设置QT标准对话框为中文字体

设置QT标准对话框为中文字体 一、问题二、解决方法1、找到Qt内置的翻译文件 qt_zh_CN.qm2、在代码中加载该文件 一、问题 在Qt中我们使用的标准对话框都是英文&#xff0c;例如下面的 字体选择对话框&#xff0c;但是实际中我们需要构建的是中文对话框。 所以我们需要使用Qt官…

T1级,生产环境事故—Shell脚本一键备份K8s的YAML文件

大家好&#xff0c;我叫秋意零。 最近对公司进行日常运维工作时&#xff0c;出现了一个 T1 级别事故。导致公司的“酒云网”APP的无法使用。我和我领导一起搞了一个多小时&#xff0c;业务也停了一个多小时。 起因是&#xff1a;我的部门直系领导&#xff0c;叫我**删除一个 …

LeetCode 2739. 总行驶距离

题目链接https://leetcode.cn/problems/total-distance-traveled/?envTypedaily-question&envId2024-04-25 简单题&#xff0c;看代码思考一下即可理解 class Solution {public int distanceTraveled(int mainTank, int additionalTank) {int res 0;while (mainTank >…

OmniPlan Pro for Mac v4.8.0中文激活版 项目流程管理工具

OmniPlan Pro for Mac是一款功能强大的项目管理软件&#xff0c;它以其直观的用户界面和丰富的功能&#xff0c;帮助用户轻松管理各种复杂的项目。 OmniPlan Pro for Mac v4.8.0中文激活版 通过OmniPlan Pro&#xff0c;用户可以轻松创建任务&#xff0c;设置任务的开始和结束时…

苹果开发者 D-U-N-S 编号申请 经历 记录

首先查询需要注册的公司是否有D-U-N-S码 (如果之前该公司上架了苹果的app&#xff0c;那一定有的&#xff0c;直接查询就可以使用) 查询地址&#xff1a;Sign In - Apple 输入公司的相关信息后并没有找到。。 滑动到最下面之后&#xff0c;可以根据当前填写的内容进行提交申请…