zoukankan      html  css  js  c++  java
  • 构造子集

    一、问题描述

    构造出 0~n-1 的所有子集。

    二、算法分析

    一次选出一个元素放入集合。

    三、代码实现

    #define ARRAY_LENGTH  10
    
    { 
        int A[ARRAY_LENGTH];
        print_subset(ARRAY_LENGTH, A, 0);
    }
    
    
    void print_subset(int n, int* A, int cur)
    {
        // cur:当前位置
        printf("cur = %d      ", cur);
    
        // 确定当前元素的最小可能值
        int s = cur ? A[cur-1] + 1 : 0;  
        
        printf("s = %d     ", s); 
    
        // 打印当前子集元素。
        for(int i = 0; i < cur; i++) {  
            printf("%d ", A[i]);
        }
           
        // 每次选出一个元素当子集的首元素,
        for(int i = s; i < n; i++) {
            A[cur] = i;
    
            // 打印加入元素后的数组
            printf("       after:");
            for(int j = 0; j <= cur; j++) {
                printf("%d ", A[j]);
            }
            printf("
    ");
    
            print_subset(n, A, cur + 1); // 递归构造子集
        }
    }
    
    cur = 0      s = 0                  after:0 
    cur = 1      s = 1     0            after:0 1 
    cur = 2      s = 2     0 1          after:0 1 2 
    cur = 3      s = 3     0 1 2        after:0 1 2 3 
    cur = 4      s = 4     0 1 2 3      after:0 1 3 
    cur = 3      s = 4     0 1 3        after:0 2 
    cur = 2      s = 3     0 2          after:0 2 3 
    cur = 3      s = 4     0 2 3        after:0 3 
    cur = 2      s = 4     0 3          after:1 
    cur = 1      s = 2     1            after:1 2 
    cur = 2      s = 3     1 2          after:1 2 3 
    cur = 3      s = 4     1 2 3        after:1 3 
    cur = 2      s = 4     1 3          after:2 
    cur = 1      s = 3     2            after:2 3 
    cur = 2      s = 4     2 3          after:3 
    cur = 1      s = 4     3 
    


  • 相关阅读:
    解决js跨域
    判断js对象类型
    闭包的理解
    this关键字
    js的数据类型
    多线程
    JavaEE之动态页面技术(JSP/EL/JSTL)
    JavaEE之HttpServletResponse
    JavaEE之HttpServletRequest
    JavaEE之会话技术Cookie&Session
  • 原文地址:https://www.cnblogs.com/dins/p/subsetting.html
Copyright © 2011-2022 走看看