您的位置:首页 > 其它

全排列-相邻交换法

2014-02-27 22:04 260 查看
  整型数组

#include <stdio.h>

void fullArray(int depth,int array[],int lenth)
{
if(lenth<=0)    return;
if(depth>=lenth)
{
int *p=array-depth;
for(int i=0;i<lenth;i++)    printf("%d ",p[i]);
printf("\n");
return ;
}
//跳出条件为超出数组长度
for(int *p=array;p-array+depth<lenth;p++)
{
//简单交换法
int temp=*p;
*p=*array;
*array=temp;
fullArray(depth+1,array+1,lenth);
*array=*p;
*p=temp;
}
}

int main()
{
int test[]={1,2,3,4};

fullArray(0,test,4);

return 0;
}


  字符型数组

#include <stdio.h>

void fullArray(char *array,int lenth)
{
if(lenth<=0)    return;

if(!*array)
{
printf("%s\n",array-lenth);

return ;
}
for(char *p=array;*p;p++)
{
char temp=*p;
*p=*array;
*array=temp;
fullArray(array+1,lenth);
*array=*p;
*p=temp;
}
}
int  main()
{
char str[]="1234";

fullArray(str,4);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: