n个数中取出r个数组合,逆序输出 组合数

来源:互联网 发布:数组怎么输出 编辑:程序博客网 时间:2024/05/17 22:55


n个数中取出r个数组合,逆序输出

找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。输入输入n、r。输出按特定顺序输出所有组合。特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。样例输入5 3样例输出543542541532531521432431421321


#include<iostream>using namespace std;class ARR{    public:    int data[10];    int a;    int b;    int pointer;    ARR(int n, int r){        pointer = 0;        a = n ;        b = r;    }    void set(int n, int r){        pointer =0;        a = n;        b = r;    }    void push(int key){        data[pointer]= key;        pointer++;    }    void print(){        for(int i = 0 ;i <pointer;++i){            cout<<data[i];        }        cout<<endl;    }    void pop(){        pointer--;    }    void comp(int n , int r);};void ARR::comp(int n,int r){    if(b == pointer){        print();        return;    }    for(int i = n; i >= r ; i--){        push(i);        comp(i-1,r-1);        pop();    }}int main(){    int n, r;    ARR arr(5,3);    while(cin>>n>>r){        arr.set(n, r);        arr.comp(n,r);    }}




0 0
原创粉丝点击