#include <stdio.h> #include <stdlib.h> int *X,*Counter,K,N; void SochGenerate(int c); void Soch() { printf("Vvedite N"); scanf("%i",&N); printf("Vvedite K"); scanf("%i",&K); K++; X=(int *)malloc(sizeof(int)*(N+1)); for(int i=1;i<=N;i++) X[i]=i; // ??? printf(""); Counter=(int *)malloc(sizeof(int)*(K+1)); Counter[0]=1; SochGenerate(1); } void SochGenerate(int c) { int i,j,n1,*Out,*X1; if(c==K) { Out=(int *)malloc(sizeof(int)*K); X1=X; for(i=1;i<=K-1;i++) { n1=0; for(j=1;j<=N;j++) { if(X1[j]!=0) n1++; if(n1==Counter[i]) { Out[i]=X1[j]; X1[j]=0; break; } } printf("%i",Out[i]); } printf("\n"); free(Out); } else { for(/*Counter (_c_) ???*/int Cnt=Counter[c-1];Cnt<=N-c+1;Cnt++/*xz chto tut imelos' vvidu*/) SochGenerate(c+1); } } int main(void) { // kakoi-to poryadok vizova, xz, napr takoi Soch(); // nugno pamyat' osvobodit' free(X); free(Counter); return 0; } |