一:全排列算法:
看到一个面试题,打印全排列,简单实现一下
#include
<
stdio.h
>
#include < stdlib.h >
// 打印全排列的算法
char array[ 100 ];
int totalnum = 0 ;
void arrange( char * array, int begin, int end)
... {
if(begin==end)
...{
totalnum++;
printf("%d :%s ",totalnum,array);
return;
}
for(int i=begin;i<end;i++)
...{
char tmp = array[begin];
array[begin] = array[i];
array[i] = tmp;
arrange(array,begin+1,end);
array[i] = array[begin];
array[begin] = tmp;
}
}
int main( int argc, char * argv[])
... {
//全排列字符数目
int num = 3;
for(int i=0;i<num;i++)
...{
array[i] = (char)('a'+i);
}
array[num] = 0;
arrange(array,0,num);
printf("ok! ");
}
#include < stdlib.h >
// 打印全排列的算法
char array[ 100 ];
int totalnum = 0 ;
void arrange( char * array, int begin, int end)
... {
if(begin==end)
...{
totalnum++;
printf("%d :%s ",totalnum,array);
return;
}
for(int i=begin;i<end;i++)
...{
char tmp = array[begin];
array[begin] = array[i];
array[i] = tmp;
arrange(array,begin+1,end);
array[i] = array[begin];
array[begin] = tmp;
}
}
int main( int argc, char * argv[])
... {
//全排列字符数目
int num = 3;
for(int i=0;i<num;i++)
...{
array[i] = (char)('a'+i);
}
array[num] = 0;
arrange(array,0,num);
printf("ok! ");
}