当前位置:我的异常网» C语言 » 全排列-字典序列、递归方法c语言实现

全排列-字典序列、递归方法c语言实现

www.MyException.Cn  网友分享于:2014-04-20  浏览:4次

全排列--字典序列、递归方法c语言实现

//字典序列方法

#include

int a[10],N;

void qsort(int a[],int left,int right)

{

int i,j,temp;

i=left;

j=right;

temp=a[left];

if(left>right)

return;

while(i!=j)

{

while(a[j]>temp &&j>i)

j--;

if(j>i)

a[i++]=a[j];

while(a[i]i)

i++;

if(j>i)

a[j--]=a[i];

}

a[i]=temp;

qsort(a,left,i-1);

qsort(a,i+1,right);

}

int fac()  //求N的阶乘,即全排列的个数

{

int count=1,i=2;

while (i<=N)

{

count*=i;

i++;

}

return count;

}

void Reverse(int m,int n)

{

int temp;

while (m

{

temp=a[m];

a[m]=a[n];

a[n]=temp;

m++;

n--;

}

}

void Output()

{

int i;

for (i=0;i

{

printf("%3d",a[i]);

}

printf("\n");

}

void Fun()

{

int index1,index2,i,k,min,n,temp;  //index1为上述j下标,index2为上述k下标

n=fac();

for (k=1;k

{

for (index1=N-2;index1>=0;index1--)    //求index1下标

{

if (a[index1]

{

break;

}

}

min=32767;

for (i=index1+1;i

{

if (a[i]>a[index1])

{

if (a[i]

{

min=a[i];

index2=i;

}

}

}

temp=a[index1];       //交换a[index1],a[index2]

a[index1]=a[index2];

a[index2]=temp;

Reverse(index1+1,N-1); //逆置a[index1]到a[N-1]的数

Output();  //输出

}

}

int main()

{

int i;

while (printf("\n Please input N:  "),scanf("%d",&N)!=EOF)

{

printf("Please input %d numbers:\n",N);

for (i=0;i

{

scanf("%d",&a[i]);

}

qsort(a,0,N-1);  //先将N个数排序

printf("These numbers are:  \n");

for (i=0;i

{

printf("%3d",a[i]);

}

printf("\n");

Fun();

}

return 0;

}

//递归方法

#include

void permutation(int array[], int begin, int end)

{

int i;

if(begin == end){

for(i = 0; i <= end; ++i){

printf("%d",array[i]);

}

printf("\n");

return;

} else {

//for循环遍历该排列中第一个位置的所有可能情况

for(i = begin; i <= end; ++i) {

swap(array[i], array[begin]);

permutation(array, begin + 1, end);

swap(array[i], array[begin]);

}

}

}

int main(int argc, char **argv)

{

int a[3] = {1, 2, 3};

permutation(a, 0, sizeof(a) / sizeof(int) - 1);

return 0;

}

文章评论

python全排列字典序输出 递归_全排列-字典序列、递归方法c语言实现相关推荐

  1. python全排列字典序输出 递归_递归实现全排列,字典序法实现全排列

    问题:全排列的递归实现 编程思想: 用1 2 3为例,全排列结果为123,132,213,231,321,312  根据全排列的找到规律 1.将当前元素与后面位置的每个元素依此交换 2.交换后取后一个 ...

  2. java 全排列 非递归_全排列(递归与非递归实现) | 学步园

    1.算法简述 简单地说:就是第一个数分别以后面的数进行交换 E.g:E = (a , b , c),则 prem(E)= a.perm(b,c)+ b.perm(a,c)+ c.perm(a,b) 然 ...

  3. python按照字典顺序输出字母_按层次和字母顺序对字典排序(Python)

    我使用Python字典(product_dict)来表示产品及其所有子部分的层次结构.dict的键是unique id(UUID),值是类对象,包含关于这些部分的所有信息,包括:part.name # ...

  4. 全排列的java算法_全排列算法原理和实现

    评论 # re: 全排列算法原理和实现  回复  更多评论 #include #include #define CHESSNUM 9 using namespace std; /*********** ...

  5. python编写程序输出诗句_闲来无事能干嘛 用Python来玩诗歌接龙

    闲来无事能干嘛 用Python来玩诗歌接龙 作为一个懂Python爬虫的运维狗,闲来无事的时候总要找点乐子(睡觉不香么),哈哈,就是这么的敬业(其实是无聊).今天网盾科技给大家讲讲怎么用Python爬 ...

  6. 全排列的java算法_全排列算法的java实现

    题目 给出三个字符,求它们的全排列 , 比如 a , b , c   应该输出   abc acb bac bca cab cba六种 代码: public class Main { public s ...

  7. python print格式化输出类型_第一讲:Python print() 格式化输出

    由于书本上少了这个知识,所以总结如下,各同学看完后完成对应的试题: 格式符为真实值预留位置,并控制显示的格式.格式符可以包含有一个类型码,用以控制显示的类型,如下: %s    字符串 (采用str( ...

  8. python竖着输出编码_在Python中使用管道标准输出时设置正确的编码

    繁花不似锦 在脚本中运行时,代码可以工作,因为Python将输出编码为终端应用程序使用的任何编码.如果你是管道,你必须自己编码.经验法则是:始终在内部使用Unicode.解码你所收到的,并对你发送的内 ...

  9. python的格式化输出学号_安利三个关于Python字符串格式化进阶知识

    点击蓝色"Python空间"关注我丫 加个"星标",每天一起快乐的学习 今 日 鸡 汤 名花倾国两相欢,常得君王带笑看. /前言/ 关于Python字符串格式化 ...

最新文章

  1. php 面试mysql,mysql中优化必读
  2. LDO和DC-DC的区别
  3. 网站移动版本开发踩坑实录二
  4. 我的SSH JDBC数据源配置
  5. UVA 10129 Play on Words
  6. UIWindowLevel详解
  7. (vc)分享一个读写ini文件的类,支持多种数据类型的读写,二进制数据都能保存和读取...
  8. 大文件上传 之 改版了的SlickUpload.HttpUploadModule(Krystalware.SlickUpload.dll)
  9. oracle同时删除一行数据,oracle 多表删除 同时删除多表中关联数据
  10. axure 自学入门教程
  11. VIS2020 长论文摘要机翻
  12. 97 Three.js 使用 specularMap 设置高光贴图
  13. 北漂IT男返乡2年的三线楼市观察(宜昌夷陵篇)-原创
  14. 基于历史使用数据的虚拟机动态整合研究( 文献阅读与问题理解)
  15. 小程序改变swiper样式(带缩略图)
  16. 想去看演唱却总是抢不到票?教你用Python制作一个自动抢票脚本
  17. Educational Codeforces Round 121 (Rated for Div. 2) unr场 A B C
  18. linux忘了用户名和密码_Linux 服务器忘记用户名密码的找回办法总结linux操作系统 -电脑资料...
  19. 如何在RobotStudio搭建基本工作站
  20. BootLoader——嵌入式系统的引导加载程序

热门文章

  1. matlab求解复杂复数方程,用matlab求解一个两重积分方程(未知数在积分下限,含复数积分)...
  2. elementui中同时上传多个文件_2019-12-19 element-ui文件上传 一次请求上传多个文件...
  3. 【一分钟了解】1em等于多少px,由什么决定?
  4. Linkis1.0用户使用文档:JAVA和SCALA调用Linkis的接口示例代码
  5. vscode前端常用插件整理(vuejs)
  6. linux命令使用示例:查看某目录属于哪个分区
  7. Scala代码案例: StdIn和if..else
  8. JVM 调优实战--JVM的运行参数及jinfo查看运行参数信息
  9. 基于Springboot2.0的Dubbo入门项目(dubbo-spring-boot-starter)
  10. 生成和合入patch的两种方式