比如说用户输入S,K,S为数组中共有S个元素,从中抽出K个元素进行组合(不是排列)如1,2,3,4,和2,3,4,1是一样的

解决方案 »

  1.   

    写段简单的递归:
    int S = 0;
    int K = 0;
    int* Result = NULL;
    int Number = 0;void Show()
    {
    printf("%d:\t", ++Number);
    for (int i=0; i<K; i++)
    printf("%d\t", Result[i]);
    printf("\n");
    }void List(int Subscript, int LastValue)
    {
    if (Subscript == K)
    {
    Show();
    return;
    }
    while (++LastValue <= S)
    {
    Result[Subscript] = LastValue;
    List(Subscript+1, LastValue);
    }
    }void main()
    {
    printf("S=");
    scanf("%d", &S);
    printf("K=");
    scanf("%d", &K);
    if (K > 0 && S >= K)
    {
    Result = new int[S];
    List(0, 0);
    delete Result;
    }
    }