内存:128  时间:1

题目描述

设整数x1,x2,,xN已存放在数组A中,编写一递归过程,输出从这n个数中取出所有k 个数的所有组合(k<=n)。例:若A中存放的数是12345k3,则输出结果应为:543542541532531521432431421321

输入

1 2 3 4 5

3

输出

543542541532531521432431421321

样例输入

5 6 1 2 9 5
4

样例输出

5921,5926,5925,5916,5915,5965,5216,5215,5265,5165,9216,9215,9265,9165,2165

提示

代码如下

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
int res[100]={0};
int num[100]={0};
void show(int s,int e,int N,int t){
    if(t>=N){
        for(int i=0;i<N;i++)
        {
            cout << res[i];
        }
        if(res[0]!=num[e-N])
            cout << ",";
        return;
    }
    for(int i=s;i<=e-N+t;i++){
        res[t] = num[i];
        show(i+1,e,N,t+1);
    }
}
int main()
{
    char data[100]={0};
    int i=0,j=0,l;
    gets(data);
    for(i=0;i<strlen(data);i++){
        if(data[i]!=32){
            num[j++] = data[i]-'0';
        }
    }
    for(i=0;i<j/2;i++){
        int temp = num[i];
        num[i] = num[j-1-i];
        num[j-1-i] = temp;
    }
    int N;
    cin >> N;
    show(0,j,N,0);
    return 0;
}

代码来源于互联网,仅供参考!