您的位置:首页 > 编程语言 > C语言/C++

c语言递归全排列问题

2016-08-27 20:08 267 查看
#include"stdio.h"

#define SWAP(a,b,c) ((c)=(a),(a)=(b),(b)=(c))

void perm(int *list,int i,int n);

int main()

{

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

perm(arry,0,3);

return 0;

}

void perm(int *list,int i,int n)

{

int j,temp;

if(i==n)

{

for(j=0;j<=n;j++){

printf("%d",list[j]);

}

printf("\n");

}

else

{

for(j=i;j<=n;j++){

SWAP(list[i],list[j],temp);

perm(list,i+1,n);

SWAP(list[i],list[j],temp);

}

}

}

上段代码大致意思为:1,2 ,3 ,4 ,位4个大循环 每个1 2 3 4在分别递归循环,当满足要求 即 j = 3;这时打印出 排列字符串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: