C小加

厚德 博学 求真 至善 The bright moon and breeze
posts - 145, comments - 195, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

NYOJ 32 组合数 解题报告

Posted on 2012-01-04 15:26 C小加 阅读(206) 评论(0)  编辑 收藏 引用 所属分类: 解题报告
点击查看题目
我用的是递归。从大到小枚举,用一个数组储存,每到一次边界输出一次。
#include<iostream>
#include<cstdio>
using namespace std;
int n,r;
int s[13];
void fun(int x,int num)
{

    s[num-1]=x;
    if(num==r)
    {
        for(int i=0;i<r;i++)
        {
            printf("%d",s[i]);
        }
        printf("\n");
        return;
    }
    num++;
    for(int i=x-1;i>=1;i--)
    {
        fun(i,num);
    }
}


int main()
{
    while(scanf("%d %d",&n,&r)!=EOF)
    {
        for(int i=n;i>=r;i--)
        fun(i,1);

    }
    return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理