- public static void main(String[] args) {
- permute("abc");
- }
- public static void permute(String str){
- int x=0;//要细化这里,这里必须对应几个变量进行位移,暂时不优化.
- int y=0;
- int z=0;//三个转换值
- int n=0;//控制换行,
- int index=1;//控制转换
- char[] chs=str.toCharArray();
- //具体跑多少次,这个计算不出来.所以用while循环,用break跳出.
- while(true){
- if(y==0&&z==0){
- System.out.print(""+chs[x]+chs[y]+chs[z]+" ");
- n++;
- }
- if(y<str.length()&&z<str.length()){
- if(y==z)
- z++;
- else if(y<z)
- y=z+(z=y)*0;//俩数交换;
- else if(y>z)
- z++;
- }
- if(index<=str.length()){//1,2,3
- System.out.print(""+chs[x]+chs[y]+chs[z]+" ");
- if(y==(str.length()-1)&&z==(str.length()-1)){//循环完毕要交换需要组合的单词
- if(index<str.length()){
- char temp = chs[0];
- chs[0] = chs[index];
- chs[index] = temp;
- index++;
- } else {
- index=0;
- }
- x=y=z=0;
- }
- }
- if(index==0)
- break;
- n++;
- if(n%10==0)
- System.out.println();
- }
- }
复制代码 这个可以实现你要的,但是我是根据我的需求做的,你需要修改.
用穷举实现的各种组合,代码写得比较乱,涉及很多条件控制.
打印结果:
aaa aab aba abb abc acb acc bbb bba bab
baa bac bca bcc ccc cca cac caa cab cba
cbb
|