6*7*8*9
//ABCD.java,我只排了AB,其余的楼主自己排吧,不用递归好象有点复杂
import java.util.*;
class Node{
public Node(String str){
this.str=str;
}
public Node(String _str,char _char,int postion){
StringBuffer sb=new StringBuffer(_str);
     sb=sb.insert(postion,_char);
     str=sb.toString();
     System.out.println(str);
}
String str=new String();
    ArrayList list=new ArrayList();
}
public class ABCD{
public static void main(String[] args)
{
Node root=new Node("00000");
for(int i=0;i<6;i++)
{
root.list.add(new Node(root.str,'A',i));
}
    Iterator roots=root.list.iterator();
    while(roots.hasNext())
    {
     Node node=(Node)roots.next();
     for(int i=0;i<7;i++)
     {
     node.list.add(new Node(node.str,'B',i));
     }
    }
}
}

解决方案 »

  1.   

    import java.util.*;
    public class Matrix{

    HashSet aRray = new HashSet();
    char aChar;

    public Matrix(String defaultString){
    this.aRray.add(defaultString);
    }
    public Matrix insert(){
    Iterator it = aRray.iterator();
    HashSet newList = new HashSet();
    while(it.hasNext()){
    String nString = (String)it.next();
    for(int i=0;i<nString.length()+1;i++){
    StringBuffer sb = new StringBuffer(nString);
    sb.insert(i,aChar);
    while(!newList.add(sb.toString()))System.out.println("重复数据");
    }
    }
    this.aRray = newList;
    return this;
    }
    public Matrix next(HashSet aRray,char aChar){
    this.aRray = aRray;
    this.aChar = aChar;
    return insert();
    }
    public static void main(String[] args){ Matrix matrix = new Matrix("00000"); matrix.next(matrix.aRray,'A');
    matrix.next(matrix.aRray,'B');
    matrix.next(matrix.aRray,'C');
    matrix.next(matrix.aRray,'D');
    Iterator it = matrix.aRray.iterator();
    for(int i=1;it.hasNext();i++){
    System.out.println(i+"\t"+(String)it.next());
    } }
    }