排列类枚举(递归)

全部排列问题

题目描述:输出 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;}}
}

简单单词接龙

题目描述:有 n 个单词( 1≤n≤50 ),每个单词由 2 个小写字母组成,并约定第 1 个单词为龙头。

例如:n=8。

8 个单词为:

aa、ac、ab、de、bh、hk、cd、af

接龙的方法为前一个单词的第 2 个字母和后一个单词的第 1 个字符相同 此时,可接的方法有: aa-ac-cd-de 长度为 4 ,即龙上有 4 个单词。 也可以接:aa-ab-bh-hk,长度为 4 。 还可以接:aa-af,长度为 2。 程序要求给出单词之后,求出最长龙的长度。

输入复制

7

aa

ac

ab

de

bh

hk

cd

输出复制

4

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

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

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

相关文章

vscode 配置verilog环境

一、常用的设置 1、语言设置 安装如下插件&#xff0c;然后在config 2、编码格式设置 解决中文注释乱码问题。vivado 默认是这个格式&#xff0c;这里也设置一样。 ctrl shift p 打开设置项 3、插件信任区设 打开一个verilog 文件&#xff0c;显示是纯本文&#xff0c;没…

Xbar控制图的定义和应用

1、定义 Xbar控制图&#xff08;X-Bar Chart&#xff09;是一种统计图表&#xff0c;用于展示数据分布情况。它通过绘制一系列数据点在均值线&#xff08;通常为X轴&#xff09;周围的分布情况来显示数据的波动性。这种图表可以用来监控生产过程、质量管理、金融分析等多个领域…

【MHA】MySQL高可用MHA介绍1-功能,架构,优势,案例

目录 一 MHA 介绍 1 MHA功能 自动化主服务器监控和故障转移 交互式&#xff08;手动启动的&#xff09;主故障转移 非交互式主故障转移 在线切换主机 2 主服务器故障转移的难点 二 MHA架构 1 MHA组件 2 自定义扩展&#xff08;脚本&#xff09; 三 MHA优势 1 MHA可以…

【Godot4自学手册】第三十八节给游戏添加音效

今天&#xff0c;我的主要任务就是给游戏添加音效。在添加音效前&#xff0c;我们需要了解一个东西&#xff1a;音频总线。这个东西或许有些枯燥&#xff0c;如果你只为添加一个音效没必要了解太多&#xff0c;但如果你以后将要经常与音频播放打交道&#xff0c;还是要了解一下…

政安晨:【深度学习神经网络基础】(十三)—— 卷积神经网络

目录 概述 LeNet-5 卷积层 最大池层 稠密层 针对MNIST数据集的卷积神经网络 总之 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎…

ReentrantLock 源码解析

ReentrantLock 源码解析 文章目录 ReentrantLock 源码解析前言一、字段分析二、内部类分析1、Sync2、FairSync3、NonfairSync 三、方法分析1、构造方法2、其他方法 总结 前言 ReentrantLock 实现了 Lock 接口&#xff0c;内部基于 AQS 实现。所以想要弄懂 ReentrantLock &#…

vue 实现左侧导航栏,右侧锚点定位滚动到指定位置(超简单方法)

项目截图&#xff1a; 实现方法&#xff1a; 点击左侧菜单根据元素id定位到可视内容区域。 浏览器原生提供了一种方法scrollIntoView 。 通过scrollIntoView方法可以把元素滚动到可视区域内。 behavior: "smooth"是指定滚动方式为平滑效果。 具体代码如下&#xf…

使用 PhpMyAdmin 安装 LAMP 服务器

使用 PhpMyAdmin 安装 LAMP 服务器非常简单。按照下面所示的步骤&#xff0c;我们将拥有一个完全可运行的 LAMP 服务器&#xff08;Linux、Apache、MySQL/MariaDB 和 PHP&#xff09;。 什么是 LAMP 服务器&#xff1f; LAMP 代表 Linux、Apache、MySQL 和 PHP。它们共同提供…

智能化安全防护:AI防火墙的原理与应用

随着人工智能技术的迅猛发展&#xff0c;其在各个领域的应用也日益广泛。作为引领数字化转型的重要力量&#xff0c;AI技术为我们的生活和工作带来了前所未有的便利与效率。在通信领域&#xff0c;人工智能的应用同样展现出了巨大的潜力和价值&#xff0c;特别是在网络安全防护…

HTTP/1.1,HTTP/2.0和HTTP/3.0 各版本协议的详解(2024-04-24)

1、HTTP介绍 HTTP 协议有多个版本&#xff0c;目前广泛使用的是 HTTP/1.1 和 HTTP/2&#xff0c;以及正在逐步推广的 HTTP/3。 HTTP/1.1&#xff1a;支持持久连接&#xff0c;允许多个请求/响应通过同一个 TCP 连接传输&#xff0c;减少了建立和关闭连接的消耗。 HTTP/2&#…

基于PaddlePaddle平台训练物体分类——猫狗分类

学习目标&#xff1a; 在百度的PaddlePaddle平台训练自己需要的模型&#xff0c;以训练一个猫狗分类模型为例 PaddlePaddle平台&#xff1a; 飞桨&#xff08;PaddlePaddle&#xff09;是百度开发的深度学习平台&#xff0c;具有动静统一框架、端到端开发套件等特性&#xf…

node.js 解析post请求 方法一

前提&#xff1a;依旧以前面发的node.js服务器动态资源处理代码 具体见 http://t.csdnimg.cn/TSNW9为模板&#xff0c;在这基础上进行修改。与动态资源处理代码不同的是&#xff0c;这次的用户信息我们借用表单来实现。post请求解析来获取和展示用户表单填写信息 1》代码难点&…

【项目实战】基于高并发服务器的搜索引擎

【项目实战】基于高并发服务器的搜索引擎 目录 【项目实战】基于高并发服务器的搜索引擎搜索引擎部分代码index.htmlindex.hpplog.hppparser.cc&#xff08;用于对网页的html文件切分且存储索引关系&#xff09;searcher.hpputil.hpphttp_server.cc&#xff08;用于启动服务器和…

WPForms Pro插件下载:简化您的在线表单构建,提升用户互动

在当今的数字化世界中&#xff0c;表单是网站与用户互动的关键。无论是收集信息、处理订单还是进行调查&#xff0c;一个好的表单可以极大地提升用户体验和转化率。WPForms Pro插件&#xff0c;作为一款专业的WordPress表单构建工具&#xff0c;旨在帮助您轻松创建美观、功能强…

深度学习基础:循环神经网络中的Dropout

深度学习基础&#xff1a;循环神经网络中的Dropout 在深度学习中&#xff0c;过拟合是一个常见的问题&#xff0c;特别是在循环神经网络&#xff08;RNN&#xff09;等复杂模型中。为了应对过拟合问题&#xff0c;研究者们提出了许多方法&#xff0c;其中一种被广泛应用的方法…

TensorFlow进阶一(张量的范数、最值、均值、和函数、张量的比较)

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

短视频评论ID批量爬虫提取获客软件|视频评论下载采集工具

短视频评论批量抓取软件&#xff1a;智能拓客&#xff0c;精准抓取用户反馈 主要功能一览 1. 智能抓取任务创建&#xff1a; 软件提供了任务创建功能&#xff0c;用户只需输入任务名称、搜索关键词以及评论监控词&#xff0c;即可开始智能抓取。不仅能够搜索关键词匹配的视频…

Gradio 最快创建Web 界面部署到服务器并演示机器学习模型,本文提供教学案例以及部署方法,避免使用繁琐的django

最近学习hugging face里面的物体检测模型&#xff0c;发现一个方便快捷的工具&#xff01; Gradio 是通过友好的 Web 界面演示机器学习模型的最快方式&#xff0c;以便任何人都可以在任何地方使用它&#xff01; 一、核心优势&#xff1a; 使用这个开发这种演示机器学习模型的…

就业班 第三阶段(负载均衡) 2401--4.19 day3

二、企业 keepalived 高可用项目实战 1、Keepalived VRRP 介绍 keepalived是什么keepalived是集群管理中保证集群高可用的一个服务软件&#xff0c;用来防止单点故障。 ​ keepalived工作原理keepalived是以VRRP协议为实现基础的&#xff0c;VRRP全称Virtual Router Redundan…

前端开发攻略---封装calendar日历组件,实现日期多选。可根据您的需求任意调整,可玩性强。

1、演示 2、简介 1、该日历组件是纯手搓出来的&#xff0c;没依赖任何组件库&#xff0c;因此您可以随意又轻松的改变代码&#xff0c;以实现您的需求。 2、代码清爽干净&#xff0c;逻辑精妙&#xff0c;您可以好好品尝。 3、好戏开场。 3、代码&#xff08;Vue3写法&#xff…