算法设计与分析——递归与分治策略——全排列

算法设计与分析——递归与分治策略——全排列

全排列问题的解决是通过分治与递归思想来解决的
首先判断是否递归到了最后一位,如果递归到了最后一位,则输出他当前的全排列序列。
如果没有到达最后一位,则循环的交换该第K个元素与其后面的所有元素,每次交换后立即进入递归程序,进入下一层的递归。
代码1:

#include<iostream>
using namespace std;
template <class Type>
void perm(Type *list,int k,int m)
{if(k == m)//此时递归到了最后一层 {for(int i=0;i<=m;i++){cout<<list[i]<<" ";} cout<<endl;}else{for(int i=k;i<=m;i++)//将传来的参数区间的,进行该位置的所有全排列 {swap(list[k],list[i]);//交换位置 perm(list,k+1,m);//递归嵌套到下一层去,即少一位后的全排列 swap(list[k],list[i]);//回溯的思想,返回到原来没有排列的样子 }}
}
int main()
{int n;cout<<"输入需要进行全排列的数据长度:"<<endl;cin>>n;int list[n];cout<<"输入需要进行全排列的数据:"<<endl;for(int i=0;i<n;i++){cin>>list[i];} cout<<"输出全排列的结果:"<<endl; perm(list,0,n-1);return 0;}

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int number=0;
void arrange(vector<int> &nums,int left,int right)
{if(left==right){for(auto a:nums){cout << a << " ";}cout << endl;number++; }else{for (int i = left; i <= right; i++){swap(nums[left], nums[i]);arrange(nums, left + 1, right);swap(nums[left], nums[i]);}}
}int main()
{vector<int> nums = {1,2,3};int count = nums.size()-1;arrange(nums, 0,count);cout<<"全排列一共有"<<number<<"个排列"<<endl; system("pause");
}

在这里插入图片描述

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

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

相关文章

asp.net core 集成 prometheus

asp.net core 集成 prometheusIntroPrometheus 是一个开源的现代化&#xff0c;云原生的系统监控框架&#xff0c;并且可以轻松的集成 PushGateway, AlertManager等组件来丰富它的功能。对于 k8s 下部署的系统来说使用 Prometheus 来做系统监控会是一个比较不错的选择&#xff…

vba 不等于_EXCEL中VBA基础语句(1)

萌二笔记分类目录及书单一、If-Then语句 说明&#xff1a;条件判断&#xff0c;如果......那么......例1&#xff1a;A2单元格的成绩大于等于60&#xff0c;则弹出对话框提示“及格”。Sub 判断成绩()If Range("A2") > 60 Then MsgBox "及格"End Sub操作…

PHP大势已去,PHP宝藏可为我所用

编者注&#xff1a; PHP有着庞大的生态系统&#xff0c;还是可以为我dotnet所用&#xff1a;介绍一个基于 .NET 的船的新 PHP SDK Runtime: PeachPie。PHP 8 昨天发布了&#xff0c;今天不写代码&#xff0c;聊聊我对 PHP 的看法。昨天在今日头条发了一条微头条&#xff0c;引…

leetcode——242. 有效的字母异位词

问题描述&#xff1a; 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat”, t “car” 输出: false 说明: 你可以假设字符串只包含小写字母。 进阶: 如…

python常用函数和操作_python一条语句分析几个常用函数和概念 -

前言 过年也没完全闲着&#xff0c;每天用一点点时间学点东西&#xff0c;本文为大家介绍几个python操作的细节&#xff0c;包含all、any、for in等操作&#xff0c;以及介绍我解决问题的思路。 一、开篇 先从我看到的一个简单的语句开始。 刚看到这个语句的时候我整个人完全懵…

.NET5发布了,腾讯招聘点名要求精通MySQL,而不是SQLServer!

.NET5正式发布&#xff0c;社区一片欢腾&#xff0c;.NET相关技术栈也会迎来大变革&#xff0c;而大厂的招聘要求可谓是技术风向标&#xff01;紧盯腾讯网易顺丰等大厂的招聘&#xff0c;会发现都在明确要求。MySQL&#xff0c;而不是SQL Server了。究其根本&#xff0c;还是跨…

leetcode——344. 反转字符串

leetcode——344. 反转字符串 问题概述&#xff1a; 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假…

python面向对象编程思想书籍_Python的面向对象编程思想

什么是Python的多态&#xff1f;多态的好处就是&#xff0c;当我们需要传入Dog、Cat、Tortoise……时&#xff0c;我们只需要接收Animal类型就可以了&#xff0c;因为Dog、Cat、Tortoise……都是Animal类型&#xff0c;然后&#xff0c;按照Animal类型进行操作即可。由于Animal…

C# WPF:把文件给我拖进来!!!

❝首发公众号&#xff1a;Dotnet9作者&#xff1a;沙漠之尽头的狼日期&#xff1a;202-11-27一、本文开始之前上传文件时&#xff0c;一般是提供一个上传按钮&#xff0c;点击上传&#xff0c;弹出文件&#xff08;或者目录选择对话框&#xff09;&#xff0c;选择文件&#xf…

c++——reverse()函数的使用

c——reverse()函数的使用 使用方式&#xff1a; reverse(vec.begin(),vec.end()); queue和stack容器不支持遍历操作&#xff0c;没有迭代器&#xff0c;所以不能使用算法里的反转函数&#xff0c;其类也没有提供反转的成员函数 因为set和map是关联式容器&#xff0c;在插入元…

python3的float数精度_python浮点数精度问题

python浮点数的计算&#xff0c;结果并不像我们想象的那样&#xff0c;比如&#xff1a;>>> 0.250.25-0.40.09999999999999998>>> 0.60.3-0.260.6399999999999999在计算机上面运算的结果是我们实际期望的结果并不一致&#xff0c;导致这样的根本原因就是&…

.NET应用程序安全操作概述

介绍此页面旨在为开发人员提供.NET安全提示。.NET Framework.NET Framework是Microsoft用于企业开发的主要平台。它是ASP.NET&#xff0c;Windows桌面应用程序&#xff0c;Windows Communication Foundation服务&#xff0c;SharePoint&#xff0c;Visual Studio Tools for Off…

leetcode——面试题 17.10. 主要元素

问题描述&#xff1a; 数组中占比超过一半的元素称之为主要元素。给定一个整数数组&#xff0c;找到它的主要元素。若没有&#xff0c;返回-1。 示例 1&#xff1a; 输入&#xff1a;[1,2,5,9,5,9,5,5,5] 输出&#xff1a;5 示例 2&#xff1a; 输入&#xff1a;[3,2] 输出…

github设置中文_【Github】100+ Chinese Word Vectors 上百种预训练中文词向量

(给机器学习算法与Python学习加星标&#xff0c;提升AI技能) 该项目提供了不同表征(密集和稀疏)上下文特征(单词&#xff0c;ngram&#xff0c;字符等)和语料库训练的中文单词向量。开发者可以轻松获得具有不同属性的预先训练的向量&#xff0c;并将它们用于下游任务。此外&…

服务器重新部署踩坑记

服务器重新部署踩坑记Intro之前的服务器是 Ubuntu 18.04 &#xff0c;上周周末想升级一下服务器系统&#xff0c;从 18.04 升级到 20.04&#xff0c;结果升级升挂了... 后来 SSH 始终连不上&#xff0c;索性删除重新部署了一个&#xff0c;新部署了一个 Centos 8 的系统&#x…

c++——优先队列(priority_queue)

优先队列详解/C 优先队列 1.概念:什么是优先队列呢?在优先队列中&#xff0c;元素被赋予优先级&#xff0c;当访问元素时&#xff0c;具有最高级优先级的元素先被访问 .即优先队列具有最高级先出的行为特征。它可以说是队列和排序的完美结合体&#xff0c;不仅可以存储数据&am…

一个div 上下两行_Django 实战 | 搭一个 GitHub 用户展示网站 02

一、创建公共 HTML 模板在 templates 文件里面新建一个 base.html&#xff0c;再到Bootstrap4中文文档找到 最基本的模板&#xff0c;拷贝代码到 base.html&#xff0c;在 home.html 中引入 base.html&#xff1a;{% extends base.html %}{% block content %}<h1>Hello W…

C#如何回到主线程,如何在委托指定线程执行

在多线程情况下&#xff0c;有时候我们需要在主线程里面执行一些逻辑&#xff0c;比如修改UI控件SynchronizationContex可以帮助我们在指定的线程执行SynchronizationContext.Current 为获取当前线程的同步上下文&#xff0c;拿到线程的上下文之后可以通过调用Send&#xff08;…

算法设计与分析——递归与分治策略——循环日程赛

问题描述&#xff1a; 非递归方案一&#xff1a;代码 #include<bits/stdc.h> using namespace std;void gameTable(vector<vector<int>> &vec,int k) {int i0,j0;//二维数组的下标&#xff0c;行&#xff0c;列 int temp;//需要新安排选手数目 int n;//…

linux开发板推荐_【新品发布】WiFi开发板XW-01-Kit,超低功耗,冷启快联,智能门锁首选!...

智能门锁作为智能家居的入口级产品以及家庭智能安防的核心单品&#xff0c;已然成为智能家居生态链中不可或缺的核心组成部分。智能门锁方案的研发仍然面临着诸多痛点&#xff0c;如耗电问题、连接繁琐和安全隐患等。物联网的应用与发展必然离不开对更低功耗的追求&#xff0c;…