输入:

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个数的全排列相关推荐

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

    算法设计与分析--递归与分治策略--全排列 全排列问题的解决是通过分治与递归思想来解决的 首先判断是否递归到了最后一位,如果递归到了最后一位,则输出他当前的全排列序列. 如果没有到达最后一位,则循环的 ...

  2. 【Python】递归实现n的全排列

    这是面试字节跳动的大数据岗位时候面试官给的一个题目,就是输出n个数的全排列. 当n=1是,perm(1)= [[1]] 当n=2是,对于perm(1)里面的每个子list,n可以在list的第0个位置 ...

  3. 对n个数进行全排列并打印全排列结果

    全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个.现以{1, 2, 3, 4, 5}为 简单分析: 1.首先看最后两个数4, 5. 它们的全排列为4 5和5 4, 即以4开头 ...

  4. python1到n的所有排列_非递归输出1-N的全排列的方法详解

    下面小编就为大家带来一篇非递归的输出1-N的全排列实例(推荐).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 网易游戏笔试题算法题之一,可以用C++,Java,Pyth ...

  5. 数据结构之栈与递归的应用(全排列递归解法)

    上一节讲了一下汉诺塔的递归实现,这一节说一下全排列递归解法. 参考了Casionx的博客,给博主带来的不便请原谅.全排列算法思路解析  全排列递归解法 全排列的定义和公式:从n个数中选取m(m< ...

  6. 用回溯法找出n个自然数中取r个数的全排列

    回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验.在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯. 本实例是用回溯法输出n个自然数中以 ...

  7. c语言字符全排列数组,使用c语言递归实现字符串的全排列

    一.介绍 递归两个基本要素: 1.边界条件(递归出口) 确定递归何时终止 2.递归模式(递归体) 大问题如何分解为小问题 二.递归实现字符串全排列 1.二话不说先上代码: #include #incl ...

  8. 递归解析之DFS全排列

    前言 通过上一篇文章<return None来看递归函数流程解析>了解了递归函数的调用及执行之后,来看看如何应用吧.本篇文章将以DFS算法实现全排列为例,加深对递归的理解,顺便看看DFS算 ...

  9. 【回溯】B035_LQ_k调数列的个数(全排列+剪枝)

    对于一个数列中的某个数,如果这个数比两侧的数都大或比两侧的数都小,我们称这个数为这个数列的一个转折点. 如果一个数列有t个转折点,我们称这个数列为t+1调数列. 给定两个正整数n,k.求在1~n的全排 ...

最新文章

  1. js取一定范围内的随机整数
  2. 解决gcc报错:error: implicit declaration of function ‘inet_addr’ [-Werror=implicit-function-declaration]
  3. 人工智能之自然语言的从新思考
  4. 用边缘计算为智能制造提速,行业的破局者是他们
  5. How to use kingshard building a MySQL cluster
  6. 一个完整的Web应用程序部署示例
  7. android alert,Android AlertDialog的基本使用
  8. tar:文件打包归档
  9. 2016谷歌官方最新eclipse工程导入studio,以前方式全部废弃。不能再使用。
  10. ConcurrentHashMap的源码分析-initTable
  11. Win11再被吐槽,文件管理器居然都有广告了?
  12. linux u32,如何在程序中使用u32这个类型啊。
  13. Arraylist理解(3)删除元素
  14. python语言的核心理念是_学习Python语言四大核心优势
  15. 若微型计算机在工作时突然断电,16秋《计算机基础》作业1
  16. python table_用python解析word文件(二):table
  17. UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
  18. 【Kettle】Win7启动Spoon.bat闪退
  19. double型10进制转二进制
  20. windows server 2012 进程 出现大量桌面窗口管理器的 解决方法

热门文章

  1. WPF窗体隐藏鼠标光标的方法
  2. ES6个人小手册,走过路过不要错过。。。。。
  3. 201621123053《Java程序设计》第十四周学习笔记文章
  4. 【云和恩墨大讲堂】从执行计划洞察ORACLE优化器的“小聪明”
  5. 如何设计Android App测试用例
  6. Unity5 新功能解析--物理渲染与standard shader
  7. 还在为xmind发愁,赶紧试试xmind移动版、绿色版
  8. 代码协定(三)——假定和断言
  9. 关于估时间的一些感想
  10. 平衡二叉树、B树(B-树)、B+树