计算机二级

3773考试网计算机等级考试计算机二级正文

C++全排列递归算法

来源:fjzsksw.com 2010-8-17 10:04:55

 

1、将一个n维数组初始化,第0位填1,第1位填2.。。。。。 第n-1位填n;

  2、将数组看为两部分,一个是已排好的,剩下是待排的,分别用两个指针指向;

  3、将第一个字符,依次与后n-1个字符交换值,每次交换得到一个新的首数字;

  4、剩下的n-1个数字按2、3步骤重复直至所有数组完成排列;

  使用c++实现,代码还有些繁琐,明天再仔细看看优化一下

  代码

  1 #include<iostream>

  2 using namespace std;

  3

  4 void swap(int *p1,int *p2)

  5 {

  6     //交换p1和p2指向的值

  7     int tmp=*p1;

  8     *p1=*p2;

  9     *p2=tmp;

  10 }

  11 void output(int *p,int n)

  12 {

  13     while(n>0)

  14     {

  15         cout<<*p;

  16         p++;

  17         n--;

  18     }

  19     cout<<"\n";

  20 }

 

 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1