至于你这个问题,
参照我博客中的
http://blog.csdn.net/rzleilei/article/details/10461653
吧,几乎是一模一样的,从M个中选出N个,无序

解决方案 »

  1.   


    貌似不适用,你可以试试,不符合LZ要求
    我说的几乎一摸一样并不是完全一样
    这题就是简单的for循环+排除的话那就有点可悲了,比如我说一种
    构建List存储所有可能
    List<String>
    for(遍历a的可能,0到10){
    for(遍历b的可能,0到10-a){
    for(遍历c的可能,0到10-a-b){
    //这里就是一个排除的功能,都建对象,把最大的那个数放到第一位里,最小的放到最后面,然后把这数字构建成字符串,String,判断List中是否有,如果没有添加进去就行了。
    }
    }
    }
    //最后统计List长度就ok了。我想说的和我那个例子有极大相似性,是想说能否阻断式的去计算,而不是用这种遍历了所有可能后的排除。
      

  2.   

    思路:
    ①最少的盘子放了一个,这样每个盘子至少一个,n个盘子先放上n个,剩下的m-n个可以随便放  
    ②最少的盘子没有放,这样剩下的n-1个盘子还是随便放m个  
    import java.util.Scanner;public class MNAppleTest { public static void main(String[] args) { Scanner in = new Scanner(System.in);
    int N, M; // M Apple, N Disk
    M = in.nextInt();
    N = in.nextInt();
    System.out.print("共有"+cal(M, N)+"种结果");
    } private static int cal(int m, int n) {
    if (m < 0)
    return 0;
    if (m == 0 || n == 1)
    return 1;
    return cal(m - n, n) + cal(m, n - 1); }}
      

  3.   

    排列组合通用算法 以前写的 http://blog.csdn.net/zqfddqr/article/details/8574339