您的位置:首页 > 编程语言 > C语言/C++

组合算法的实现,递归,C语言

2015-09-23 14:35 225 查看
组合算法的实现,递归:

#include "stdafx.h"

#include<iostream>

#define COMBINE_MAXN 1000

int s[COMBINE_MAXN];

int p, q;    //C(p,q)

int c[COMBINE_MAXN];    //middle reults stack

int push=0;    //middle results pointer

void combineCXX(int *s,int n,int t)

{

    //C(n,t)=C(n-1,t)+C(n-1,t-1)

    int j;

    if ((n > t) && (t>0))

    {

        combineCXX(s + 1, n - 1, t);

        c[push++] = *s;

        combineCXX(s + 1, n - 1, t - 1);

        push--;

    }

    else

    {

        for (j = 0; j <push; j++)

            printf("%d", c[j]);

        for (j = 0; j < t; j++)

            printf("%d", s[j]);

        printf("\n");

    }

}

int _tmain(int argc, _TCHAR* argv[])

{

    int i;

    for (i = 0; i < COMBINE_MAXN; i++)

        s[i] = i;

    p = 4;    //C(p,q)

    q = 4;

    combineCXX(s, p, q);

    system("pause");

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 算法 递归