0

我很难改变这个程序。该算法对于生成非重复列表已经是正确的。但是,我希望从用户的整数范围生成列表。(1 到 n)

例如:用户输入 5 -> 打印 (1 2 3 4 5) 然后要求 5 个整数来生成组合。

我将如何改变这一点,以便从 (1-n) 中找到组合,而不是单独输入整数 n 次?任何帮助将不胜感激。(对不起,如果它很乱,我是学生:P)

#include<stdio.h> stdio.h
#include<stdlib.h> stdlib.h

int a1[50], a2[50]; // arrays
int count=-1, range;
int w; // user defined variable

void main()
{ 

    printf("Please enter a number. (1-10): ");
    scanf("%d", &w);

    int x,y; // comparing
    printf("You have entered %d\n\n",w);
    for(range=1; range<=w; range++){
        printf("%d", range);
        printf(" ");
    } // end for "range"

    printf("\n");

    for(x=0; x<w; x++){

        a1[x]=0;
        y=x+1;
        scanf("%d\n\n" ,&a2[y]); 

    }// end for 

    combo(w);

} // end main


combo(int z) // function with algorithm to find combonations 
{
    while (w<1 || w>10){

        printf("\nThat number is not in range. Please try again. \n\n");
        printf("Please enter a number. (1-10): ");
        scanf("%d", &w);

    } // end while

    int x;
    a1[z]=++count;

    if(count==w){

        for(x=0; x<w; x++)
        printf("%2d",a2[a1[x]]);
        printf("  ");

    } // end if 

    for(x=0; x<w; x++)
    if(a1[x]==0)
    combo(x);
    count--;
    a1[z]=0;

} // end "combo"
4

1 回答 1

2
#include <stdio.h>
#include <string.h>

void swap (int *X, int *Y)
{
  int temp;
  temp = *X;
  *X = *Y;
  *Y = temp;
}

void print_array(int *a, int n) {
   int i; 
   printf("\t=>  ");
   for(i = 0; i < n; i++){
     printf("%d, ", a[i]);
   }
   printf("\n");
}

void mixmatch (int *Arr, int i, int n)
{
  int j;
  int *A = Arr;
  if (i == n)
     print_array(A,n+1);
  else
  {
     for (j = i; j <= n; j++)
     {
        swap((A+i), (A+j));
        mixmatch(A, i+1, n);
        swap((A+i), (A+j));
     }
  }
}

int main()
{
   int A[10];
   int k;
   int i;
   printf("Enter a number between (1-10):");
   scanf("%d", &k);
   for(i = 0; i < k && i < 10; i++) {
       printf("%d, ",i);
       A[i] = i; 
   }
   printf("\n");
   mixmatch(A, 0, k-1);
   return 0;
}

这就是您可以修改它以合并整数和它们的数组的方式。

于 2013-02-28T02:38:38.247 回答