问题引入:
将 A B C 全排列, 并打印出全部排列可能.
- #include<stdio.h>
- #include<string.h>
- void f(char a[],int k){
- int i,length;
- length=strlen(a); // 计算字符串的长度
- if(k==length-1){
- printf("%s",a); // 打印字符数组 a
- printf("\n");
- return ;
- }
- char t;
- for(i=k;i<length;i++)
- {
- {
- t=a[k]; a[k]=a[i];a[i]=t;
- } // 试探
- f(a,k+1);
- // 回溯
- {
- t=a[k]; a[k]=a[i];a[i]=t;
- } // 把上一级改变的再改变过来, 防止下次递归改变 a 的值时, 已经不是初始的 a
- }
- int main(){
- char a[4]={
- 'A','B','C'
- }; // 初始化字符数组 a
- f(a,0);
- return 0;
- }
实例
来源: http://www.bubuko.com/infodetail-2990937.html