zoukankan      html  css  js  c++  java
  • 8、排列组合

      1 /*
      2 Permutations
      3 排列组合
      4 输入abc,输出所有可能的排列结果
      5 输入:abc
      6 输出:	abc
      7 		acb
      8 		bac
      9 		bca
     10 		cab
     11 		cba
     12 */
     13 
     14 #include<iostream>
     15 
     16 using namespace std;
     17 
     18 int c1=0;
     19 int c2=0;
     20 
     21 void show(char *p,int m)
     22 {
     23 	for(int i=0;i<=m;i++)
     24 		cout<<p[i];
     25 	cout<<endl;
     26 }
     27 
     28 void Permutations(char *p,const int k,const int m)
     29 {
     30 	cout<<"c1="<<++c1<<endl;//进入递归一共调用了10次
     31 	if(k==m)
     32 	{
     33 		for(int i=0;i<=m;i++)
     34 			cout<<p[i];
     35 		cout<<endl;
     36 	}
     37 	else
     38 	{
     39 		for(int i=k;i<=m;i++)
     40 		{
     41 			cout<<"递归前,交换前";
     42 			show(p,m);
     43 			swap(p[k],p[i]);
     44 			cout<<"递归前,交换后";
     45 			show(p,m);
     46 			Permutations(p,k+1,m);
     47 			cout<<"c2="<<++c2<<endl;//返回递归的次数
     48 			cout<<"递归后,交换前";
     49 			show(p,m);
     50 			swap(p[k],p[i]);
     51 			cout<<"递归后,交换后";
     52 			show(p,m);
     53 		}
     54 	}
     55 	////a开头的,后面跟着bc的所有排列
     56 	//swap(p[0],p[0]);
     57 	//Permutations(p,1,2);
     58 	//swap(p[0],p[0]);
     59 	////a开头的,后面跟着bc的所有排列
     60 	//swap(p[0],p[1]);
     61 	//Permutations(p,1,2);
     62 	//swap(p[0],p[1]);
     63 	////a开头的,后面跟着bc的所有排列
     64 	//swap(p[0],p[2]);
     65 	//Permutations(p,1,2);
     66 	//swap(p[0],p[2]);
     67 }
     68 
     69 int main()
     70 {
     71 	char s[]="abc";
     72 	Permutations(s,0,2);
     73 
     74 	system("pause");
     75 	return 0;
     76 }
     77 


    VS2010运行结果:

    image

  • 相关阅读:
    计算机三级数据库-指导
    spring导入约束
    hibernater获取session时org.hibernate.service.spi.ServiceException错误
    springxml配置注入报错
    右键复制类的完整路径
    关于实体里的toString方法
    idea创建web项目环境
    框架快速找类
    如何在scdn博客里搜索自己博客文章
    永久消除自动产生的QQPCMgr
  • 原文地址:https://www.cnblogs.com/luanxin/p/8876127.html
Copyright © 2011-2022 走看看