虽然是比较简单的题目,但是网上大多数都是使用递归,然后得出一个14总数,其实这个题可以深入一下使用dfs将它的全排列输出出来。
package book;
public class dfs_libai01 {
static String [] recordArr=new String[10000];
static int sum=0;
static int index=-1;
public static void main(String[] args) {
f(5, 10, 2,"");
System.out.println(sum);
}
public static void f(int store,int flower,int wine,String record){
index++;
recordArr[index]=record;
if(flower==1&&store==0&&wine==1){
sum++;
for (int i = 0; i <= index; i++) {
System.out.print(recordArr[i]);
}
System.out.print("b");
System.out.println();
return ;
}
if(store<0||flower<0||wine<0){
return ;
}
f(store-1, flower, wine*2,"a");
recordArr[index]="";
index--;
f(store, flower-1, wine-1,"b");
recordArr[index]="";
index--;
}
}
运行结果
ababbbbbabababb
abbabbabbbababb
abbabbbaabbbabb
abbabbbabaabbbb
abbbaabbabbbabb
abbbaabbbaabbbb
abbbabaabbabbbb
baababbbbbababb
baabbabbabbbabb
baabbabbbaabbbb
baabbbaabbabbbb
babaababbbbbabb
babaabbabbabbbb
bababaababbbbbb
14