回溯法全排列

回溯法全排列

问题引入:

将 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; }

实例

 

posted @ 2019-03-17 21:48  changfan  阅读(1361)  评论(0编辑  收藏  举报