把m个数中的 n个进行排序组合 请各位高手帮帮忙啊

解决方案 »

  1.   

    详细点,n个数是哪N个,从m中随机取的?
      

  2.   

    m多大都可以,n也是 就是调用方法 method(m,n)能将所有的可能都能打出来
      

  3.   

    private String[] factorial(int m, int n)
    {
    int count = 1;
    Random random = new Random();
    String strFac = "";
    HashMap<String, String> facMap = new HashMap<String, String>();
    String[] strFacs;
    if (n > m)
    {
    n=m;
    }
    for (int i = m; i > m - n; i--)
    {
    count *= i;
    }
    strFacs = new String[count];
    while (facMap.size() < count)
    {
    HashMap<String, String> subFacMap = new HashMap<String, String>();
    String[] strSubFacs = new String[n];
    while(subFacMap.size() < n)
    {
    Integer num = new Integer(random.nextInt(m) + 1);
    String str = num.toString();
    if (subFacMap.containsKey(str) == false)
    {
    subFacMap.put(str, str);
    strSubFacs[subFacMap.size()-1]=str;
    }
    } StringBuffer sbr = new StringBuffer();
    sbr.append(strSubFacs[0]);
    for (int i = 1; i < strSubFacs.length; i++)
    {
    sbr.append("," + strSubFacs[i]);
    }
    strFac = sbr.toString(); if (facMap.containsKey(strFac) == false)
    {
    facMap.put(strFac, strFac);
    strFacs[facMap.size()-1]=strFac;
    }
    }
    return strFacs;
    }只是实现了功能,效率不太高,由于用的是取随机数,越到后面越慢。