c语言全排列用什么函数,全排列 c语言

递归全排列 c语言 看不懂

perm(list,i,j)是一个全排列函数,拿你上面的列子来说:

十余年的章丘网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整章丘建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“章丘网站设计”,“章丘网站推广”以来,每个客户项目都认真落实执行。

perm(list,0,5)意思是数组list的前6个数(第0个数到第5个数)的所有排列,它细分的话就等于:第0个数和第1个数互换以后的perm(list,1,5) 第0数和第2数互换perm(list,1,5) ....第0数和第5数互换的perm(list,1,5) 和它本身的所在0位置的perm(list, 1, 5)

如假如6个数是1 2 3 4 5 6

他们的排列就 * * * * * * perm(list,0,5)

1 * * * * * perm(list,1,5)

2 * * * * * perm(list,1,5)

3 * * * * * perm(list,1,5)

4 * * * * * perm(list,1,5)

5 * * * * * perm(list,1,5)

6 * * * * * perm(list,1,5) 就是每一个数都在第0个位置上面都出现一次以后的排列总和。 也就是它的for循环的意思

这只是形象的比喻一下

c语言作业,输出四个数A,B,C,D的全排列

#include iostream

#include stdio.h

#include algorithm

using namespace std;

int main()

{

int num[4]={1,2,3,4};

do

{

printf("%c,%c,%c,%c\n",num[0]+'A'-1,num[1]+'A'-1,num[2]+'A'-1,num[3]+'A'-1);

}while(next_permutation(num,num+4));

return 0;

}

可以借助于stl模板中的next_permutation函数,这个函数是按照字典序不停的取该序列的下一个序列,直到结束。然后输出的时候讲数字转化为你要的字母即可。

例如 第一个序列是1,2,3,4,--》A,B,C,D

全排列用C语言实现

给,已经编译运行确认:

#includestdio.h

#includestring.h

char a[20];

int lenth;

long count=0;

void main()

{void move(int,int);

int i,j=0;

printf("input:");gets(a);

lenth=strlen(a);

for(i=0;ilenth;i++)

move(j,i);//move a[i] to the front of a[j];

printf("\ntotal=%d\n",count);

}

void move(int here,int which)//move a[which] to the front of a[here];

{char b[20];

char temp;

int m,n;

if(herelenth-1)

{if(here!=which)

{for(m=0;mlenth;m++)

b[m]=a[m];

temp=a[which];

for(m=which;mhere;m--)

a[m]=a[m-1];

a[m]=temp;

}

for(n=here+1;nlenth;n++)

move(here+1,n);

if(here!=which)

for(m=0;mlenth;m++)

a[m]=b[m];

}

else

{printf("%-10s",a);

count++;}

}

用c语言编写全部排列

void chang(char str[],int m) /*定义循环左移函数(我没有用左移函数)*/

{

int i,j;

char temp=str[0];

for (i=0;im;i++) str[i]=str[i+1];

str[i]=temp;

}

void pai(char str[],int m,int n) /*定义全排列函数*/

{

int k;

void chang(char str[],int m);

if (mn) /* 定 义 递 归 调 用 出 口 */

{

for (k=0;k=m;k++)

{

pai(str,m+1,n); /*递归调用*/

chang(str,m); /*调用左移函数*/

}

}

else printf("%s\t",str);

}

#include "stdio.h"

main()

{char str[]="ABCD"; /*全排列字符,可以任意多个(相应的下面排列函数中参数"4"改成全排列字符的个数)*/

clrscr();

pai(str,0,4); /*这里参数0(下标)表示从第一个元素开始,4表示元素个数(不是下标)*/

getch();

}

c语言中几个数组成的数的全排列用什么函数

C语言中没有吧?C++中倒是有一个:

next_permutation(array,array+arrlength)

使用的头文件是#include algorithm

示例:

#include iostream

#include algorithm    /// next_permutation, sort

using namespace std;

int main () {

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

sort (myints,myints+4);

do {

cout  myints[0]  ' '  myints[1]  ' '  myints[2]  ' ' myints[3]'\n';

} while ( next_permutation(myints,myints+4) );    ///获取下一个较大字典序排列

cout  "After loop: "  myints[0]  ' '  myints[1]  ' '  myints[2]  ' ' myints[3] '\n';

return 0;

}

c语言全排列递归问题

可以输出所有的排列,i和n表示排列的起始点和终止点比如说要排列"abcd"起点就是0,终点是3,perm(“abcd”,0,3)就可以了。


本文标题:c语言全排列用什么函数,全排列 c语言
网页路径:http://scyanting.com/article/dsseogc.html