Ich habe ein kleines Problem damit.Ich möchte jede mögliche Kombination generieren.Die Zahlen in 1D-Array befindet und es wird aus einer Datei gelesen. Jetzt weiß ich das Problem nicht: Ich weiß, dass jede Kombination, die zum Überwachen gedruckt wird, in aufsteigender Reihenfolge ist. Das Problem ist, dass wenn es mit der kleinsten Nummer endet, es nicht zur nächsten Nummer aufsteigt.Backtracking-Algorithmus zum Generieren aller Kombinationen
Beispiel: Die 1D-Array-Datei mit 1,2,3,4,5 und n = 5 und p = 3; Mögliche Kombinationen:
1 2 3, 1 2 4, 2 5 1 , 1 3 4, 3 5 1 , , 2 3 5, usw. ..
Hier ist, was ich bisher getan:
#include <stdio.h>
#include <stdlib.h>
void print(int*,int);
void combination(int*,int,int,int);
int main()
{
FILE *fin = fopen("bemenet.txt","r");
if(!fin){printf("Error opening file @!!!");return 0;}
int *a,i,n,p = 3;
fscanf(fin,"%i ",&n);
a = (int*)malloc(n*sizeof(int));
for(i = 0; i < n; ++i){
fscanf(fin,"%i ",&a[i]);
}
combination(a,n,p,0);
return 0;
}
void combination(int *a,int n,int p,int k)
{
int i;
if(k == p){
print(a,k);
}
else{
for(a[k + 1] = a[k] + 1 ; a[k+1] < n; ++a[k+1]){
combination(a,n,p,k+1);
}
}
}
void print(int *a,int k)
{
int i;
for(i = 0; i < k; ++i){
printf("%i ",a[i]);
}
printf("\n");
}
aber wenn ich ex: for (i = 0; i
Zsombi