m元素集合的n个元素子集

理论:

假设有5个元素的集点,取出3个元素的可能子集如下:
{1 2 3}、{1 2 4 }、{1 2 5}、{1 3 4}、{1 3 5}、{1 4 5}、{2 3 4}、{2 3 5}、{2 4 5}、{3 4 5}

这些子集已经使用字典顺序排列,如此才可以观察出一些规则:
如果最右一个元素小於m,则如同码錶一样的不断加1
如果右边一位已至最大值,则加1的位置往左移
每次加1的位置往左移后,必须重新调整右边的元素為递减顺序

java实现:

package 经典;
public class NofM {
    private int m;
    private int[] set;
    private boolean first;
    private int position;

    public NofM(int n, int m) {

        this.m=m;
        first=true;
        position=n-1;

        set=new int[n];
        for(int i=0; i<n; i++)
            set[i]=i+1;
    }

    public boolean hasNext(){
            return set[0]<m-set.length+1;
    }

    public int[] next(){

        boolean flag=false;
        if(first)
        {
            first=false;
            return set;
        }

        if(set[set.length-1]==m)
        {
            position--;
            flag=true;
        }
        else
        {
            position=set.length-1;
        }
        set[position]++;

        // 調整右邊元素
        if(flag==true)
        {
        for(int i=position+1; i<set.length; i++)
            set[i]=set[i-1]+1;
        }
        return set;
    }

    public static void main(String[] args) {
        NofM nofm=new NofM(3,5);

        while(nofm.hasNext())
        {
            int[] set=nofm.next();

            for(int i=0; i<set.length; i++)
                System.out.print(set[i]);
            System.out.println();
        }
    }
}
时间: 2024-11-12 06:36:59

m元素集合的n个元素子集的相关文章

【m元素集合的n个元素子集】

/* m元素集合的n个元素子集 说明: 假设有个集合拥有m个元素,任意的从集合中取出n个元素,则这n个元素所形成的可能子集有那些? 解法: 假设有5个元素的集点,取出3个元素的可能子集如下: {1 2 3} .{1 2 4 } .{1 2 5} .{1 3 4} .{1 3 5} .{1 4 5} .{2 3 4} .{2 3 5} .{2 4 5} .{3 4 5}这些子集已经使用字 典顺序排列,如此才可以观察出一些规则: 如果最右一个元素小于m,则如同码表一样的不断加 1 如果右边一位已至最

[ jquery 过滤器 prev([expr]) ] 此方法用于在选择器的基础之上搜索查找取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合

取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合,可以用一个可选的表达式进行筛选.只有紧邻的同辈元素会被匹配到,而不是前面所有的同辈元素 expr 用于筛选前一个同辈元素的表达式 实例: <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <

[ jquery 过滤器 siblings(expr) ] 此方法用于在选择器的基础之上搜索取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合,可以用可选的表达式进行筛选

此方法用于在选择器的基础之上搜索取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合,可以用可选的表达式进行筛选 实例: <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' content='

HLG 1710 给出三个集合a,b,c,统计集合a元素+集合b中元素=集合c中的元素的个数 (基础题)

链接: http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1710 Description 有A. B. C 三个集合的,其中a∈A, b ∈ B, c ∈ C,求有多少种方式使得a + b = c. Input 有多组测试数据,请处理到文件结束. 对于每组测试数据,有三行: 第一行为A集合的描述,第一个数为n,表示A集合有n个数,接下来有n个整数a1~an. 第二行为B集合,第三行为C集合,表

children([expr]) 取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合。

children([expr]) 概述 取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合. 可以通过可选的表达式来过滤所匹配的子元素.注意:parents()将查找所有祖辈元素,而children()只考虑子元素而不考虑所有后代元素.大理石量具哪家好 参数 exprStringV1.0 用以过滤子元素的表达式 示例 描述: 查找DIV中的每个子元素. HTML 代码: <p>Hello</p><div><span>Hello Again</

next([expr])取得一个包含匹配的元素集合中每一个元素紧邻的后面同辈元素的元素集合。

next([expr]) 概述 取得一个包含匹配的元素集合中每一个元素紧邻的后面同辈元素的元素集合. 这个函数只返回后面那个紧邻的同辈元素,而不是后面所有的同辈元素(可以使用nextAll).可以用一个可选的表达式进行筛选.直线电机选型 参数 exprStringV1.0 用于筛选的表达式 示例 描述: 找到每个段落的后面紧邻的同辈元素. HTML 代码: <p>Hello</p><p>Hello Again</p><div><span&g

[经典算法] 排列组合-M元素集合的N个元素子集

题目说明: 假设有个集合拥有m个元素,任意的从集合中取出n个元素,则这n个元素所形成的可能子集有那些? 题目解析: 假设有5个元素的集合,取出3个元素的可能子集如下: {1 2 3}.{1 2 4 }.{1 2 5}.{1 3 4}.{1 3 5}.{1 4 5}.{2 3 4}.{2 3 5}.{2 4 5}.{3 4 5} 这些子集已经使用字典顺序排列,如此才可以观察出一些规则: 如果最右一个元素小于m,则如上面一样的不断加1 如果右边一位已至最大值,则加1的位置往左移 每次加1的位置往左移

Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)

1. TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序) (1)Student.java: 1 package cn.itcast_07; 2 3 public class Student { 4 private String name; 5 private int age; 6 7 public Student() { 8 super(); 9 } 10 11 public Student(String name, int age) { 12 super(); 13 thi

操作getElementsByTagName返回的元素集合需要注意的细节

学习javascript不仔细还真不行. 如题所说,当你对getElementsByTagName返回的集合中的元素执行删除节点的操作时,集合的length是会变化的,例如 <div id="attachList"> <input type="file" name="img" /> <input type="file" name="img" /> <input ty