回溯法全排列


回溯法全排列

问题引入:

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

实例

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM