私はこの問題に少し問題があります。可能なすべての組み合わせを生成したいと思います。数字は1D配列にあり、ファイルから読み込まれます。今私は問題を知らない:私は、監視するために印刷されるすべての組み合わせが昇順であることを知っている。問題は、最小の数字で終了すると次の数字に上がらないということです。すべての組み合わせを生成するバックトラッキングアルゴリズム
例:1,2,3,4,5およびn = 5およびp = 3の1D配列ファイル。 可能な組合せ:
1 2 3、 1 2 4、 1 2 5、 1 3 4、 1 3 5、 1 4 5、 2 3 4、 2 3 5、 等...ここで
は、私がこれまで行って何です:
#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");
}
私はex:for(i = 0; i
Zsombi