码迷,mamicode.com
首页 > 编程语言 > 详细

组合数生成算法

时间:2015-08-25 23:38:12      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;


bool next_combination(vector<int>& vec,int n)
{
    int k = vec.size() - 1;
    for(;k>=0;k--){
        if(vec[k]<n + k - vec.size() + 1) break;
    }
    if(k<0) return 0;
    vec[k]++;
    for(int i=k+1;i<vec.size();i++)
    {
        vec[k+1] = vec[k]+1;
    }
    return 1;
}

int main(){
    int n,k;
    scanf("%d%d",&n,&k);
    vector<int> vec,vec2,dir;
    for(int i = 1;i<=k;i++){
        vec.push_back(i);
    }
    do{
        for(int i=0;i<vec.size();i++){
            printf("%d ",vec[i]);
        }
        printf("\n");
    }
    while(next_combination(vec,n));
}

 

组合数生成算法

标签:

原文地址:http://www.cnblogs.com/zhjou/p/4758831.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!