递归全排列(C#)

递归全排列(C#):

static int[] xx=new int[4];
static void Main(string[] args)
{
printP(4, xx, 0);

}
static void printP(int n,int [] A,int cur)
{

int i, j;
if (cur == n)
{
for (i = 0; i < n; i++)
Console.Write(A[i]);
Console.WriteLine();
}
else
for (i = 1; i <= n; i++)
{
int ok = 1;
for (j = 0; j < cur; j++)
if (A[j] == i) ok = 0;
if (ok == 1) { A[cur] = i; printP(n, A, cur + 1); }

}

}

时间: 2024-10-23 20:16:14

递归全排列(C#)的相关文章

sicily 1198. Substring (递归全排列+排序)

DescriptionDr lee cuts a string S into N pieces,s[1],…,s[N]. Now, Dr lee gives you these N sub-strings: s[1],…s[N]. There might be several possibilities that the string S could be. For example, if Dr. lee gives you three sub-strings {“a”,“ab”,”ac”},

Num 33 : 函数递归 [ 全排列 ]

数学上的全排列问题: 给定m个数,可以排列成n位数的所有情况: 例:3 个数 ( 1,2,3 ) 排列成两位数[ 含有重复数字 ]有: 11,12 ,13,21,22,23,31,32,33: 例:2个数( 1,2 ) 排列成三位数: 111, 112, 121, 122, 211, 212, 221, 222: 由上易找到规律:         对于 n 位 m 个要求的数 [ 不妨设为1,2,3的 2位数 ],我们只需从最高位开始,依次冠以第一个数( 11 );         之后保持高位

python非递归全排列

刚刚开始学习python,按照廖雪峰的网站看的,当前看到了函数这一节.结合数组操作,写了个非递归的全排列生成.原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位置插入,生成n+1个新的全排列.因为Python切割数组或者字符串,以及合并比较方便,所以,程序会节省很多代码. 1 def getArrayInsertCharToStr(STR,CHAR): 2 arr =[] 3 s_len = len(STR) 4 index =0 5 while inde

uva 10344 23 out of 5(递归+全排列)

这道题好像不是回溯就是简单的递归,全排列一下就ok啦,晚上估计不能好好刷题了 代码: #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; int cmp(const void *c,const void *d) { return *(int *)c - *(int *)d ; } int flag; int a[5];

字符串或者数字数组全排列

//字符串全排列package com.demo.acm; public class AllSortChar { public static void allSort(char[] buf,int start,int end){ if(start==end){ for(int i=0;i<=end;i++){ System.out.print(buf[i]); } System.out.println(); }else{ //多个字母全排列 for(int i=start;i<=end;i++

全排列合集

不得不佩服这位大哥,算法钻研的这么细,说的还很清楚:http://blog.csdn.net/morewindows/article/details/7370155    算法并非照着贴来的,是我看了他的说明自己写的. 去掉重复的非递归全排列: 如何计算字符串的下一个排列了?来考虑"926520"这个字符串,我们从后向前找第一双相邻的递增数字,"20"."52"都是非递增的,"26 "即满足要求,称前一个数字2为替换数,替换数

Permutations,全排列

问题描述:给定一个数组,数字中数字不重复,求所有全排列. 算法分析:可以用交换递归法,也可以用插入法. 递归法:例如,123,先把1和1交换,然后递归全排列2和3,然后再把1和1换回来.1和2交换,全排列1和3,再把1和2交换回来.1和3交换,全排列2和1,再把1和3交换回来. 1 //递归方法 2 public List<List<Integer>> permute2(int[] num) { 3 List<List<Integer>> result =

【基础练习】codevs1294 全排列题解

惊奇的发现我竟然没写过这个 粘了黄学长的代码 因为所有的递归全排列拥有共同的灵魂 我经常犯得错误是把取消标记放到循环外 至今没开博的查查比君纠正过很多次 所以记住一定递归后马上取消标记 --水茫茫,平沙雁,旋惊散.

Java 全排列

package algorithm; public class SortAll { public static void main(String[] args) { char buf[] = {'1','2','3','4','5'}; perm(buf,0,buf.length-1); } private static void perm(char[] buf, int start, int end) { if(start==end){//当只要求对数组中一个字母进行全排列时,只要就按该数组输