• NYOJ-组合数


    #include <stdio.h>
    #include <malloc.h>
    int main()
    {
        int *shu=NULL,n,r,i,j,count=0;
        int flag[10];
        scanf("%d%d", &n,&r);
        if(n==r)
        {
    
            while(n)
            {
                printf("%d",n);
                n--;
            }
            putchar('
    ');
        }
        else
        {
            shu=(int *)malloc((r+1)*sizeof(int));
            for(i=r; i>=1; i--)
                shu[i]=n--;
            for(i=1; i<=r; i++)
                flag[i]=0;
            for(i=r; i>=1; i--)
                printf("%d", shu[i]);
            putchar('
    ');
            j=1;
            while(1)
            {
                while(j<r&&shu[j]==j)
                {
                    flag[j]=1; /*标记*/
                    j++;
                    shu[j]--;
                    for(i=j; i>=2; i--)
                        shu[i-1]=shu[i]-1;
                    for(i=r; i>=1; i--)
                        printf("%d", shu[i]);
                    putchar('
    ');
                }
                if(shu[j]==j)
                    flag[j]=1;
                for(i=1,count=0; i<=r; i++)
                    if(flag[i]==1)
                        count++;
                if(count==r) break;
                j=1;
                shu[j]--;
                for(i=r; i>=1; i--)
                    printf("%d", shu[i]);
                putchar('
    ');
            }
        }
        return 1;
    }
    View Code

    用递归解的

    #include<stdio.h>
    int n,m;
    int num[100];
    
    int dfs(int top, int v)
    {
        int i;
        if (v == 0) {
            for(i=m; i>0; i--)
                printf("%d", num[i]);
            printf("
    ");
            return 0;
        }
        for(i=top; i>=v; i--) {
            num[v] = i;
            dfs(i-1, v-1);
        }
    }
    
    int main()
    {
        while(~scanf("%d%d", &n, &m)) {
            dfs(n, m);
        }
        return 0;
    }         
    View Code
  • 相关阅读:
    堆排序
    伽马分布
    隔壁-贪心
    对刚—约瑟夫环
    站军姿-两圆并集
    单纯的线性筛素数
    3兔子
    2.圆桌游戏
    1.花
    历史
  • 原文地址:https://www.cnblogs.com/the-one/p/3558568.html
Copyright © 2020-2023  润新知