Generating Permutations全排列

Problem

        generating all permutations of the numbers 1, 2, . . . , n.

The first algorithm
Idea

          1[all the permutations of the numbers 2,3,,n]

          2[all the permutations of the numbers 1,3,,n]

           ……

                        n[all the permutations of the numbers 1,2,,n-1]

  1. 首先,我们创建一个数组P[],用来存储排列结果。数组P的长度为n,表示排列中包含的数字范围从1到n。
  2. 我们从1到n的循环,将数组P[]初始化为1到n的有序排列。
  3. 接着,调用perml(1)这个过程,开始生成排列。
  4. 过程perml(m)的目标是生成从m到n的所有排列。
  5. 如果m等于n,表示我们已经完成了整个排列,将当前的排列输出。
  6. 否则,我们从m到n的循环,每次交换P[m]和P[j]的值,然后递归调用perml(m+1),直到达到最后一个数字n。
  7. 当递归回溯到上一层时,再次交换P[m]和P[j]的值,以确保在下一轮迭代中能够重新考虑所有可能的排列。
  8. 最终,当m等于n时,输出P[1..n]表示一种排列
Time Complexity:  Q ( nn !)

        Since there are n! permutations, Step 1 of Procedure perm1 takes nn! to output all permutations.

        Now we count the number of iterations of the for loop. In the first call to Procedure perm1, m = 1. Hence, the for loop is executed n times plus the number of times it is executed in the recursive call perm1(2). When n = 1, the number of iterations is zero, and the number of iterations f(n) can be expressed by the recurrence

The second algorithm
n Idea

           n   [x xx x] ,

            [´] n [x  x x]

      ……

           [ x x   x  x] n.

       First, we put n in P[1] and generate all the permutations of the first n − 1 numbers using the subarray P[2..n]. Next, we put n in P[2] and generate all the permutations of the first n − 1 numbers using the subarrays P[1] and P[3..n]. Then, we put n in P[3] and generate all the permutations of the first n−1 numbers using the subarrays P[1..2] and P[4..n]. This continues until finally we put n in P[n] and generate all the permutations of the first n 1 numbers using the subarray P[1..n − 1]. Initially, all n entries of P[1..n] contain 0’s.

  1. 首先,我们创建一个数组P[],用来存储排列结果。数组P的长度为n,表示排列中包含的数字范围从1到n。
  2. 我们从1到n的循环,将数组P[]初始化为0。
  3. 接着,调用perm2(n)这个过程,开始生成排列。
  4. 过程perm2(m)的目标是生成从m到0的所有排列。
  5. 如果m等于0,表示我们已经完成了整个排列,将当前的排列输出。
  6. 否则,我们从1到n的循环,对于每个位置j,如果P[j]等于0,表示该位置还没有被填入数字,则我们将数字m填入该位置。
  7. 然后,递归调用perm2(m-1),继续填入下一个数字。
  8. 在递归返回之前,将填入的数字重新置为0,以便下一轮迭代使用。
  9. 当所有位置都填满数字后,输出当前排列。
  10. 最终,当m等于0时,输出P[1..n]表示一种排列。
Time Complexity:  Q ( nn !)

        Since there are n! permutations, Step 1 of Procedure perm2 takes nn! to output all permutations.

        Now we count the number of iterations of the for loop. The for loop is executed n times in every call perm2(m) plus the number of times it is executed in the recursive call perm2(m − 1). When Procedure perm2 is invoked by the call perm2(m) with m > 0, the array P contains exactly m zeros, and hence the recursive call perm2(m − 1) will be executed exactly m times. When m = 0, the number of iterations is zero, and the number of iterations can be expressed by the recurrence

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

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

相关文章

【Mybatis 基础】增删改查(@Insert, @Delete, @Update, @Select)

Mybatis Insert Delete Update Select Mybatis用法基础操作 - 删除delete 传参SpringbootMybatisCrudApplicationTests 测试类删除预编译SQL 基础操作 - 插入Insert 插入SpringbootMybatisCrudApplicationTests 测试类插入对象主键返回 基础操作 - 更新UPDATE 更新SpringbootMy…

k8s系列之十七 Istio中的服务治理

删除前面配置的目的地规则 [rootk8s-master ~]# kubectl delete destinationrule details destinationrule.networking.istio.io "details" deleted [rootk8s-master ~]# kubectl delete destinationrule productpage destinationrule.networking.istio.io "pr…

pdfjs 实现给定pdf数据切片高亮并且跳转

pdfjs 实现给定pdf数据切片高亮并且跳转 pdfjs 类的改写基本展示需求的实现高亮功能的实现查询功能分析切片数据处理 pdfjs 类的改写 需求: pdf文件被解析成多个分段,每个分段需要能够展示,并且通过点击分段实现源pdf内容的高亮以及跳转需求…

视频声音生成字幕 pr生成视频字幕 以及字幕乱码的解决

目录 目录 1、首先把要生成字幕的视频拖入以创建序列 2、点击工具栏的 窗口 选择 文本 3、选择字幕下的 转录序列 4、选择输出的语言(主要看视频声音说的是啥语言) 5、音轨 选择 音频1​编辑 6、点击转录 7、等待转录文本 8、点击创建说明性字幕按…

论文阅读笔记——Rethinking Pointer Reasoning in Symbolic Execution

文章目录 前言Rethinking Pointer Reasoning in Symbolic Execution12.1、基本情况概述12.2、摘要12.3、引言12.4、方法12.4.1、基本版本12.4.1.1、内存加载和存储12.4.1.2、状态合并 12.4.2、改进12.4.2.1、地址范围选择12.4.2.2、内存清理12.4.2.3、符号化的未初始化内存12.4…

卷起来——高级数据分析师

要成为一名高级数据分析师,需要掌握一系列的技能,包括数据处理、统计分析、机器学习、数据可视化以及业务理解等,喜欢或者想往这方面发展的童鞋们,卷起来,点击以下链接中的链接,备注"分析"进群交…

Clip Converter - 视频在线下载方法

Clip Converter - 视频在线下载方法 1. Video URL to Download2. Continue3. StartReferences YT to MP4 & MP3 Converter! https://www.clipconverter.cc/ Clip Converter is a free online media conversion application, which allows you to reocord, convert and do…

YOLOv8改进 | 主干篇 | 修复官方去除掉PP-HGNetV2的通道缩放功能(轻量又涨点,全网独家整理)

一、本文介绍 本文给大家带来的改进机制是大家在跑RT-DETR提供的HGNetV2时的一个通道缩放功能(官方在前几个版本去除掉的一个功能),其中HGNetV2当我们将其集成在YOLOv8n的模型上作为特征提取主干的时候参数量仅为230W 计算量为6.7GFLOPs该网…

无人直播(视频推流)

环境搭建 我这里采用的是ffmpeg来进行推流直播 yum -y install wgetwget --no-check-certificate https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.0.3-64bit-static.tar.xztar -xJf ffmpeg-4.0.3-64bit-static.tar.xzcd ffmpeg-4.0.3-64bit-staticmv ffmpeg /u…

kubernetes-networkpolicies网络策略问题

kubernetes-networkpolicies网络策略问题 问题描述 重点重点重点,查看我的博客CKA考题,里面能找到解决方法 1.部署prometheus监控的时候,都部署成功,但是web访问503-504超时 2.添加ingress的时候也是访问不到,其他命…

寻找最大值最小值

Problem Finding both the minimum and maximum in an array of integers A[1..n] and assume for simplicity that n is a power of 2 A straightforward algorithm 1. x←A[1]; y←A[1] 2. for i←2 to n 3. if A[i] < x then x←A[i] 4. if A[i] > y then y←A[i…

gin语言基础学习--会话控制(下)

练习 模拟实现权限验证中间件 有2个路由&#xff0c;/cookie和/home/cookie用于设置cookiehome是访问查看信息的请求在请求home之前&#xff0c;先跑中间件代码&#xff0c;检验是否存在cookie 访问home&#xff0c;会显示错误&#xff0c;因为权限校验未通过 package mainim…

centos创建svn库步骤

1.切换root用户 1、设置root用户的密码&#xff1a; sudo passwd root 2、切换到root用户权限 su 3、切换回个人用户权限 exit 2.用root用户执行yum install -y subversion 3.创建文件夹mkdir -p /data/svn/repository 4.创建SVN 版本库 5.输入命令&#xff1a; svnadmin creat…

IDEA连接github.com连接超时 Invalid authentication data. connect time out 的问题解决(亲测有效)

问题&#xff1a; IDEA连接github.com连接超时 Invalid authentication data. connect time out 解决方案&#xff08;亲测有效&#xff09;&#xff1a; 修改host文件&#xff1a;打开 C:\Windows\System32\drivers\etc\hosts&#xff0c;文件末尾添加如下内容&#xff1a; …

OriginBot智能机器人开源套件

详情可参见&#xff1a;OriginBot智能机器人开源套件——支持ROS2/TogetherROS&#xff0c;算力强劲&#xff0c;配套古月居定制课程 (guyuehome.com) OriginBot智能机器人开源套件 最新消息&#xff1a;OriginBot V2.1.0版本正式发布&#xff0c;新增车牌识别&#xff0c;点击…

Vue3基础笔记(2)事件

一.事件处理 1.内联事件处理器 <button v-on:click"count">count1</button> 直接将事件以表达式的方式书写~ 每次单击可以完成自增1的操作~ 2.方法事件处理器 <button click"addcount(啦啦啦~)">count2</button> 如上&…

VMware下建立CentOS 7

1.点击新建虚拟机 2.下一步 3.选择号安装程序光盘映像文件位置&#xff0c;下一步 4.选择版本和操作系统然后下一步 5.编辑虚拟机名称并选择安装位置&#xff0c;然后下一步 6.设置最大磁盘大小&#xff0c;下一步 7.点击完成 8.点击编辑虚拟机设置 9.将此虚拟机内存设置为2G&a…

中间件学习--InfluxDB部署(docker)及springboot代码集成实例

一、需要了解的概念 1、时序数据 时序数据是以时间为维度的一组数据。如温度随着时间变化趋势图&#xff0c;CPU随着时间的使用占比图等等。通常使用曲线图、柱状图等形式去展现时序数据&#xff0c;也就是我们常常听到的“数据可视化”。 2、时序数据库 非关系型数据库&#…

爬虫实践(1)

这一篇只提登录模拟&#xff0c;主要介绍chrome开发者窗口的使用&#xff0c;实际上相关接口调用都是用到cookie&#xff0c;需要再加一篇从token到cookie&#xff0c;以保证实践的完整性 以migu登录为例&#xff0c;分析其登录过程&#xff0c;之后可以使用任意语言模拟登录&…

小程序富文本图片宽度自适应

解决这个问题 创建一个util.js文件,图片的最大宽度设置为100%就行了 function formatRichText(html) {let newContent html.replace(/\<img/gi, <img style"max-width:100%;height:auto;display:block;");return newContent; }module.exports {formatRichT…