荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: bakey (sbb的猪), 信区: Program
标  题: 重发集合内所有元素取值的程序
发信站: 荔园晨风BBS站 (2005年12月03日16:00:15 星期六), 站内信件

[code]
#include <stdio.h>
#include <string.h>

int n, r;
int C[5];
int used[5];

void combine(int pos,int h)
{
    int i;
    /*如果已选了r个元素了,则打印它们*/
    if (pos==r) {
        for (i=0; i<r; i++)
            printf("%d",C[i]+1);
        printf("\n");
        return;
    }
    for (i=h; i<=n-r+pos; i++) /*对于所有未用的元素*/
        if (!used[i]) {
            /*把它放置在组合中*/
            C[pos] = i;
            /*使用该元素*/
            used[i]++;
            /*搜索第i+1个元素*/
            combine(pos+1,i+1);
            /*恢复递归前的值*/
            used[i]--;
        }
}

int main()
{
    int i;
    scanf("%d",&n);
    for (i = 1; i <= n; i ++) C[i] = i;
    for (i = 1 ; i <= n; i ++)
    {
        memset(used,0,sizeof(used));
        r = i;
        combine(0,0);
    }
    return 0;
}
[/code]
--
「我知道,你不知道。我知道,你不知道我知道,你不知道」
「我知道你,不知道我。知道你不知道我,知道你不知道」
「我,知道你不知道我知道。你,不知道我知道你不知道」
   日子一天天过去,    我很快就会死掉
               全国BBS都关了,我们去睡觉了
              我是个大猪头
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.111.149]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店