实现全排列的另一种方法(续)
实现全排列的另一种方法,就是实现递归。
实现思路:
假如 allsort(a b c);分治思想化为a+allsort(b c); b+allsort(a c), c+allsort(a b);
递归一层后计算第二层时:如allsort(b c)时,化为b+allsort(c) 和 c+allsort(b);
此时问题就明显了,首先确定一个元素,求剩下的全排列,如此类推下去做一个递归;
实现代码:
#include <stdio.h>#define N 4int a[N];void perm(int);void print();void move(int, int);int main(){int i;for(i = 0; i<N; i++){scanf("%d",&a[i]);}perm(0);}void perm(int offset){int i;if(offset == N-1){print();return;}else{for(i = offset;i < N; i++){move(i, offset);perm(offset + 1);move(i, offset);}}}void print(){int i;for(i = 0; i < N-1; i++)printf("%d ",a[i]);printf("\n");}void move(int i, int offset){int temp;temp = a[offset];a[offset] = a[i];a[i] = temp;}
自此, 全排列的递归算法就算实现了。。。
转载于:https://www.cnblogs.com/fightingxu/archive/2012/12/15/2819786.html
实现全排列的另一种方法(续)相关推荐
- python基础入门:实现(无重复字符)字符串的全排列的两种方法
求任意一个字符串的全排列组合,例如a='123',输出 123,132,213,231,312,321.(暂时假定字符串没有重复) 目前有两种解决的方法 方法一: def str_sort(s='') ...
- WPS会员如何取消自动续费?微信/支付宝/WPS共3种方法
WPS 开启会员模式之后还是非常好用的,老古这些年就一直使用 WPS 会员来办公,不过有些用户不想花钱购买会员了就想取消 WPS 会员的自动续费功能,那么应该如何取消呢?今天老古就简单说一下微信. ...
- 一种全新的软件界面设计方法(续)
一种全新的软件界面设计方法(续) 点击下载文章所附代码 撰文:Aweay 你可转载,拷贝,但必须加入作者署名Aweay,如果用于商业目的,必须经过作者同意. 前段时间,笔者写了一篇关于使用Web页面设 ...
- php 求数组组合数,php实现求数组全排列,元素所有组合的方法
下面小编就为大家带来一篇php求数组全排列,元素所有组合的方法总结.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 本文实例讲述了php求数组全排列,元素所有组合的方法总 ...
- Iterator to list的三种方法
文章目录 简介 使用while 使用ForEachRemaining 使用stream 总结 Iterator to list的三种方法 简介 集合的变量少不了使用Iterator,从集合Iterat ...
- 【剑指offer 07】用迭代和递归两种方法重构二叉树(python实现)
本文讲解一个经典的面试题,使用 python 通过迭代和递归两种方法重构二叉树. 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字 ...
- iphone新旧手机数据传输已取消_如何取消iPhone手机App自动扣费?三种方法让你不再被“偷”...
一直以来苹果手机App这个自动续费真是让大家不胜其烦,钱虽然不多可总是平白无故这里十块,那里二十块的被扣也是不小的浪费,日常生活中为了追追剧.听听音乐.玩玩游戏难免会开通一些App会员而选择自动续费的 ...
- WPF程序将DLL嵌入到EXE的两种方法
2019独角兽企业重金招聘Python工程师标准>>> WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了> ...
- 生成排列(全排列)的两种写法
问题简述:输出任意各自然数(可不连续)所有不重复的排列,即全排列,要求所产生的任一数字序列中不允许出现重复的数字. 解决方法:1.交换法 2.数组访问法,两种方法都是由dfs回溯完成,也可以使用 ...
- 客户流失的原因 防止客户流失的6种方法
客户流失率每降低5%,企业利润可以增加25%~95%.经济学中的二八定律也表明:企业未来收入的80%来自20%的现有客户.同时,<市场营销指标>调查显示向老客户进行销售,成功的概率大约为6 ...
最新文章
- caffe这个c++工程的目录结构
- C#弹窗提示输入密码
- IRC BOT原来是利用IRC下发CC命令——在xx云环境遇到了,恶意软件开的是6666端口...
- MYSQL GROUP_CONCAT 用法
- React状态管理大乱斗,横向对比Dva,Rematch,Mirror
- 机器学习笔记(十二)计算学习理论
- java calendar类_2020 年,你还在使用 Java 中的 SimpleDateFormat 吗?
- java 反射 私有成员_Java对类私有变量的暴力反射技术讲解
- Velox将在Pangolin上启动其算法交易机器人,并计划推出更多DeFi解决方案
- Flutter代码锦囊---集中管理路由与导航
- keepalived track script introduce
- Redis基本命令及相关用法
- 从Linux程序中执行shell(程序、脚本)并获得输出结果(转)
- GB28181标准文档以及GB35114标准文档免费下载
- vue 解决控制台Prop being mutated: “placement“报错
- 领峰:普通人如何炒白银技巧和方法有哪些
- 荣耀终端android面试,华为终端面试经验
- 2018年上半年阅读总结(系统架构师)
- 农村物流配送管理如何走出困境?这里有方案
- 微信小程序 实现带刻尺度滑块