• Given an array of size n, find all the possible sub set of the array of size k


    Given an array of size n, find all the possible sub set of the array of size k(all the subsets must be of size k).

    Q:

    给一个大小为n的数组,输出其中k个数字的组合。

    A:

    void subarray(int arr[], int t[], int n, int index, int k, int kIndex) 
    {
    int i;

    if (n == 0)
    return;

    if (kIndex == k) { // 说明已经取到了k个数字,打印出来
    for (i = 0; i < kIndex; i++)
    printf("%d ", t[i]);
    printf("\n");
    return;
    }

    if (n - index < k - kIndex)
    return;

    t[kIndex] = arr[index];
    subarray(arr, t, n, index + 1, k, kIndex + 1); // 已经取了当前的数字,再继续取;

    subarray(arr, t, n, index + 1, k, kIndex); // 因为k <= n,所以存在有无法取到的数字,该调用则是忽略前面的数字,从后面的数字开始取
    }

    for example: 

        int att1[5] = {1,2,3,4,5};
    int att3[5] = {};
    subarray(att1, att3, 5, 0, 4, 0);





  • 相关阅读:
    [NOIP2020]T2字符串匹配
    【CSGRound2】逐梦者的初心(洛谷11月月赛 II & CSG Round 2 T3)
    【CF1225E Rock Is Push】推岩石
    [HAOI2016]食物链
    求先序排列
    图书管理员
    合并果子
    联合权值
    和为0的4个值
    玩具谜题
  • 原文地址:https://www.cnblogs.com/yayagamer/p/2293330.html
Copyright © 2020-2023  润新知