回溯概念
一种采用分治策略进行穷举搜索的方法。
代码
我们用字符类型的数组A[n]存储二进制字符串,从最后一位开始赋值,直到第一位,每一次赋值都有0 1两种可能。
生成所有n位长的二进制字符串:
void Binary(int n){//n表示第n位字符,此函数对前n位字符赋值
if(n<1){
Syetem.out.println(A);
} //n=0表示已经赋值结束
else{
A[n-1]=1;
Binary(n-1);
A[n-1]=0;
Binary(n-1);//两个分支,赋值完第n位继续向前赋值。
}
}
延伸
扩展到生成所有n位长的K进制字符串
void K(int n,int k){
if(n<1){
Syetem.out.println(A);
} //n=0表示已经赋值结束
else{
for(int j=0;j<k;j++){
A[n-1]=j;
K(n-1,k);//两个分支,赋值完第n位继续向前赋值
}
}
}