【递归】n个数的全排列
输入:
3
1 2 3
输出:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
Delphi代码:
program full_permutation;//全排列 const max_n = 10; var n: integer; rcd, used, num: array[0..max_n] of integer; procedure full_permutation(index: integer);var i: integer;beginif index = n thenbeginfor i := 0 to n - 2 do Write(rcd[i], ' '); writeln(rcd[n - 1]); exit;end; for i := 0 to n - 1 doif used[i] = 0 thenbegin used[i] := 1; rcd[index] := num[i]; full_permutation(i + 1); used[i] := 0;end;end; var i: integer;beginwhile not seekeof dobegin readln(n);for i := 0 to n - 1 do Read(num[i]); FillChar(used, sizeof(used), 0); full_permutation(0);end;end.
C++代码:
#include <stdio.h>#include <string.h>#define MAX_N 10 int n;int rcd[MAX_N], used[MAX_N], num[MAX_N]; void full_permutation(int index){int i;if (index == n) {for (i = 0; i < n ; i++) { printf("%d", rcd[i]);if(i<n-1) printf(" "); } printf("\n");return; } for (i=0; i<n; i++) {if (!used[i]) { used[i] = 1; //标记 rcd[index] = num[i]; //在index位置上放上该数 full_permutation(index+1); used[i] = 0; //清除标记 } }} int read_data(){int i;if (scanf("%d", &n)== EOF) {return 0; }for (i = 0; i < n ; i++) { scanf("%d", &num[i]); } memset(used, 0, sizeof(used));return 1;} void main(){while(read_data()) { full_permutation(0); }}
转载于:https://www.cnblogs.com/wouldguan/archive/2012/04/06/2435209.html
【递归】n个数的全排列相关推荐
- 算法设计与分析——递归与分治策略——全排列
算法设计与分析--递归与分治策略--全排列 全排列问题的解决是通过分治与递归思想来解决的 首先判断是否递归到了最后一位,如果递归到了最后一位,则输出他当前的全排列序列. 如果没有到达最后一位,则循环的 ...
- 【Python】递归实现n的全排列
这是面试字节跳动的大数据岗位时候面试官给的一个题目,就是输出n个数的全排列. 当n=1是,perm(1)= [[1]] 当n=2是,对于perm(1)里面的每个子list,n可以在list的第0个位置 ...
- 对n个数进行全排列并打印全排列结果
全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个.现以{1, 2, 3, 4, 5}为 简单分析: 1.首先看最后两个数4, 5. 它们的全排列为4 5和5 4, 即以4开头 ...
- python1到n的所有排列_非递归输出1-N的全排列的方法详解
下面小编就为大家带来一篇非递归的输出1-N的全排列实例(推荐).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 网易游戏笔试题算法题之一,可以用C++,Java,Pyth ...
- 数据结构之栈与递归的应用(全排列递归解法)
上一节讲了一下汉诺塔的递归实现,这一节说一下全排列递归解法. 参考了Casionx的博客,给博主带来的不便请原谅.全排列算法思路解析 全排列递归解法 全排列的定义和公式:从n个数中选取m(m< ...
- 用回溯法找出n个自然数中取r个数的全排列
回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验.在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯. 本实例是用回溯法输出n个自然数中以 ...
- c语言字符全排列数组,使用c语言递归实现字符串的全排列
一.介绍 递归两个基本要素: 1.边界条件(递归出口) 确定递归何时终止 2.递归模式(递归体) 大问题如何分解为小问题 二.递归实现字符串全排列 1.二话不说先上代码: #include #incl ...
- 递归解析之DFS全排列
前言 通过上一篇文章<return None来看递归函数流程解析>了解了递归函数的调用及执行之后,来看看如何应用吧.本篇文章将以DFS算法实现全排列为例,加深对递归的理解,顺便看看DFS算 ...
- 【回溯】B035_LQ_k调数列的个数(全排列+剪枝)
对于一个数列中的某个数,如果这个数比两侧的数都大或比两侧的数都小,我们称这个数为这个数列的一个转折点. 如果一个数列有t个转折点,我们称这个数列为t+1调数列. 给定两个正整数n,k.求在1~n的全排 ...
最新文章
- js取一定范围内的随机整数
- 解决gcc报错:error: implicit declaration of function ‘inet_addr’ [-Werror=implicit-function-declaration]
- 人工智能之自然语言的从新思考
- 用边缘计算为智能制造提速,行业的破局者是他们
- How to use kingshard building a MySQL cluster
- 一个完整的Web应用程序部署示例
- android alert,Android AlertDialog的基本使用
- tar:文件打包归档
- 2016谷歌官方最新eclipse工程导入studio,以前方式全部废弃。不能再使用。
- ConcurrentHashMap的源码分析-initTable
- Win11再被吐槽,文件管理器居然都有广告了?
- linux u32,如何在程序中使用u32这个类型啊。
- Arraylist理解(3)删除元素
- python语言的核心理念是_学习Python语言四大核心优势
- 若微型计算机在工作时突然断电,16秋《计算机基础》作业1
- python table_用python解析word文件(二):table
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
- 【Kettle】Win7启动Spoon.bat闪退
- double型10进制转二进制
- windows server 2012 进程 出现大量桌面窗口管理器的 解决方法