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

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

2015-09-23 14:29 225 查看
计算机程序设计艺术,4A组合算法J的实现:

void combineJ(int n, int t)

{

    //C(n,t)

    int c[COMBINE_MAXN];    //c[0] is not used

    int j, i;

    // Initializing

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

    {

        c[j] = j - 1;

    }

    c[t + 1] = n;

    c[t + 2] = 0;

    //main loop

    for (;;)

    {

        //visit

        for (i = t; i >= 1; i--)

        {

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

        }

        printf("\n");

        //Find j

        j = 1;

        while (c[j] + 1 == c[j + 1])

        {

            c[j] = j - 1;

            j++;

        }

        //Done?

        if (j > t)

        {

            break;

        }

        c[j]++;

    }

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