1,2,3,4,5几个数字,输出任意的这五个数字的组合,要求:
35不在一起,即 13542  是错误的.
4不在第二位上,即 54213 是错误的.
求输出的组合.

解决方案 »

  1.   

    你用随机数取出五个数,加上个条件判断,然后填入到对应的数组就好了,如果不想要重复出现的可以写一个循环判断,具体API不会要去查文档。
      

  2.   

    从别的地方搞到:class Permutation {  private String CurFixPart;
    private String PreGenNum; public static void main(String[] args){
    Permutation p=new Permutation();
    p.GenControll("12345");
    } private String shift(String s, int pos){
    String newStr;
    if (s.length()>pos+1)
    newStr=s.substring(pos, pos+1)
    +s.substring(0, pos)
    +s.substring(pos+1);
    else
    newStr=s.substring(pos)
    +s.substring(0, pos);
    return newStr;
    }

    protected int Validate(String newNum){
    String newGenNum=CurFixPart+newNum;
    if (Integer.valueOf(newGenNum)<=Integer.valueOf(PreGenNum))
    return 0;
    if (newGenNum.substring(1,2).equals("4") || 
    (newGenNum.indexOf("35")!=-1) || 
    (newGenNum.indexOf("53")!=-1)) 
    return 0; PreGenNum=newGenNum;
    System.out.println(newGenNum);
    return 0;
    }
     
    public void GenControll(String Base) {
    PreGenNum="0";
    CurFixPart="";
    GenNext(Base, 0);
    }

    void GenNext(String varPart, int curPos){
    if (varPart.length()==2){
    Validate(varPart);
    Validate(shift(varPart, 1));
    return;
      } String newGen=shift(varPart, curPos);
    String SavedFixPart=CurFixPart;
    CurFixPart=CurFixPart+newGen.substring(0,1);
    GenNext(newGen.substring(1), 0);
    CurFixPart=SavedFixPart; if (curPos==varPart.length()-1)
    return;
    GenNext(varPart, curPos+1);
    }
    }