C语言的组合算法

文件名称 C_SF_combination.c ,源代码如下:

#include 
#include 
#include 

/**
 * arr  源数据。
 * n  arr的长度。
 * start  arr的当前递归开始位置。
 * res  组合结果存放数据。
 * m  res的长度。
 * index  当前要写入res的位置。
 */
void recursion(int *arr, int n, int start, int *res, int m, int index);

// 简介:  组合算法。
// 参考来源:  https://wenku.baidu.com/view/967f37ef4328915f804d2b160b4e767f5acf8022  。
int main(void)  
{
    int n = 0, m = 0;
    printf("请输入数据的长度N (N>0) : ");
    scanf("%d", &n);
    printf("你输入一个组合的数据长度m (0n) {
        printf("输入的数值不合理\n");
        return -1;
    }

    // 初始化。
    int arr[n];
    for (int i=0; i 1  3  x(/4)   ~ [注: 小括号里面的数据是前面留下的缓存数据] 。
//          - - - index=2 start=3 i=start=3
//          1  3  4  
//              - - - index=3 start=3
//              打印数据。
//          - - - index=2 start=2 i=start+1=3
//          条件 i<=n-(m-index) 不成立而结束循环。 
//      - - - index=1 start=1 i=start+2=3
//      条件 i<=n-(m-index) 不成立而结束循环。
//
//
// - - - index=0 start=0 i=start+1=1
// x(/1)  x(/3)  x(/4) -> 2  x(/3)  x(/4)
//      - - - index=1 start=2 i=start=2
//      2  3  x(/4)
//          - - - index=2 start=3 i=start=3
//          2  3  4
//              - - - index=3 start=4
//              打印数据。
//          - - - index=2 start=3 i=start+1=4
//          条件 i<=n-(m-index) 不成立而结束循环。
//      - - - index=1 start=2 i=start+1=3
//      条件 i<=n-(m-index) 不成立而结束循环。
//
//
// - - - index=0 start=0 i=start+2=2
// 条件 i<=n-(m-index) 不成立而结束循环。
//
//

// 参考来源: https://wenku.baidu.com/view/967f37ef4328915f804d2b160b4e767f5acf8022 。

你可能感兴趣的:(IT_C语言和C++语言,算法,c语言,数据结构)