首页 > 其他 > 详细

全排列,组合问题

时间:2014-07-16 12:15:44      阅读:398      评论:0      收藏:0      [点我收藏+]

(1)全排列问题

 1 //全排列的两种方法
 2 #include <iostream>
 3 using namespace std;
 4 
 5 //方法一,采用swap方法
 6 void quanpailie(char * A,int first,int n)
 7 {
 8     if(A==NULL)
 9     {
10         cout<<"A is NULL"<<endl;
11         return;
12     }
13     if(n<=1)
14     {
15         cout<<A<<endl;
16         return;
17     }
18     for(int i=first;i<first+n;i++)
19     {
20         swap(A[i],A[first]);
21         quanpailie(A,first+1,n-1);
22         swap(A[i],A[first]);
23     }
24     return;
25 }
26 
27 //采用字典序全排序,就是采用的字典排序思想,从后向前找出第一个A[i]<A[i+1],如果没有就说明结束,
28 //然后在从右向左找出第一个大于A[i]的,进行交换,然后逆序i+1到最后(也就是逆序j到最后)。
29 void quanpailie2(char * A,int n)
30 {
31     cout<<A<<endl;              //输出最开始的“abc”
32     if(A==NULL||n<=0)
33         return;
34     while(true)
35     {
36         int i;
37         for(i=n-2;i>=0;i--)
38         {
39             if(A[i]<A[i+1])
40                 break;
41         }
42         if(i<0)
43         {
44             break;
45         }
46         for(int k=n-1;k>=0;k--)
47         {
48             if(A[k]>A[i])
49             {
50                 swap(A[i],A[k]);
51                 break;
52             }
53         }
54         reverse(A+i+1,A+n);
55         cout<<A<<endl;
56     }
57 }
58 
59 int main()
60 {
61     char A[]="1234";
62     //quanpailie(A,0,4);
63     quanpailie2(A,4);
64     system("pause");
65 }

(2)组合问题

。。。。。

全排列,组合问题,布布扣,bubuko.com

全排列,组合问题

原文:http://www.cnblogs.com/zmlctt/p/3848115.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!