数字的全排列

原创 2005年04月25日 15:19:00

#include<stdio.h>

#define NUMBER  5

FILE * fp;

void print_array(int p[])
{
 int i;
 for(i=0;i<NUMBER;i++)
 {
  printf("%d  ",p[i]);
  fprintf(fp,"%d ",p[i]);
 }
 fprintf(fp,"/n");
 printf("/n");
}

void print_array_fp(int p[])
{
 int i;
 for(i=0;i<NUMBER;i++)
 {
  fprintf(fp,"%d ",p[i]);
 }
 fprintf(fp,"/n");
}

void swap(int &x,int &y)
{
 int temp = x;
 x = y;
 y = temp;
}

//用递归
void f(int p[], int start, int end)
{
  int i;

  if (start == end)
    print_array(p); //打印p数组的值
  else
  {
    for(i = start; i <= end; i++)
 {

   fprintf(fp,"i = %d, start = %d, end = %d then swap1 p[start], p[i] : ", i,start,end);
      swap(p[start], p[i]);  //swap交换两变量的值
   print_array_fp(p);

   fprintf(fp,"f(%d,%d) /n",start+1,end);
      f(p, start+1, end);

   fprintf(fp,"i = %d, start = %d, end = %d then swap2 p[start], p[i] : ", i,start,end);
      swap(p[start], p[i]);
   print_array_fp(p);

    }
  }
}

void main()
{
 fp = fopen("c://result.txt","w+t");

 int data[NUMBER] = {1,2,3,4,5};

 f(data, 0, 4);
}

Java与算法之(4) - 数字全排列

全排列是指n个数(或其他字符)所有可能的排列顺序,例如1 2 3三个数字的全排列是 1 2 3, 1 3 2, 2 1 3, 2 3 1, 3 1 2, 3 2 1 那么问题来了,任意输入一个大于1...
  • autfish
  • autfish
  • 2016年08月31日 16:29
  • 7227

c++实现数字的全排列

#include #include using namespace std; void recursivePrint(vector number,int length,int index) {...
  • u013676711
  • u013676711
  • 2016年08月31日 11:44
  • 367

46.排列组合 (15分)

题目内容: 对字符串(数字,字母,符号)进行全排列,并统计全排列的种树 输入描述 输入一个字符串 输出描述 输出字符串的全排列,每种情况占一行...
  • u010862301
  • u010862301
  • 2014年11月05日 09:15
  • 405

全排列的四种生成算法

1.字典序法   字典序法中,对于数字1、2、3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列 12354和12345,排列12...
  • gaixm
  • gaixm
  • 2015年10月20日 21:00
  • 1618

用回溯算法解决全排列问题

全排列问题的回溯解法: public class Permute { public int N; public int[] X; public static void main(Str...
  • xmsheji
  • xmsheji
  • 2015年06月01日 18:37
  • 913

求数列的全排列(递归解法)

问题很简单,求数列的全排列,比如一个数列1,2,3.它的全排列就是: 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 现在要用计算机来求,我只想到递归和回溯也只写...
  • huntererer
  • huntererer
  • 2016年03月14日 20:00
  • 551

C语言算法—(生成数字的组合升级)生成数据的全排列(类似建立树的回溯法)

其实我们可以看到,在上一个算法(生成数字的组合)中,生成的数据中包含了已知数据的全排列在其中了; 所以我们可以对上一个程序生成的数据进行一次筛选就可以得到全排列;首先,给出上一个算法(生成数字的组合...
  • Vernon917
  • Vernon917
  • 2017年03月26日 23:33
  • 458

回溯法之求全排列

题目:求1,2,...,N的全排列。例,N=3时,共有六种: 思路:回溯法就是先确定某一部step的选择,选择之后要置状态为1,以表示某个资源已被使用;然后把“选择”和当前状态传到到step+...
  • u013490101
  • u013490101
  • 2016年01月26日 16:54
  • 1470

全排列的java实现(含重复数字)

题目原型: Given a collection of numbers that might contain duplicates, return all possible unique perm...
  • cow__sky
  • cow__sky
  • 2014年02月28日 10:42
  • 2322

n全排列输出和 n个数的组合(数字范围a~b)

n全排列输出:int WPermutation(int num, bool bRepeat) num表示num全排列 bRepeat标志是否产生重复元素的序列。 int Permutat...
  • weiqiwu1986
  • weiqiwu1986
  • 2014年08月26日 17:06
  • 1422
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数字的全排列
举报原因:
原因补充:

(最多只允许输入30个字)