#include #include #define MAXSIZE 100 int N, k; int array[MAXSIZE+2]; FILE * outfile; void PrintIt(int p) { int i; if (N % p != 0) return; fprintf(outfile, "\n"); for (i = 1; i <= N; i++) fprintf (outfile, "%d ", array[i]); } void gen (int t, int p) { int j; if (t > N) PrintIt(p); else { array[t] = array[t-p]; gen(t+1,p); for (j = array[t-p]+1; j <= k-1; j++) { array[t] = j; gen(t+1,t); } } } int main (int argc, char * argv[]) { if (argc != 4) { printf("\n\nFormat: %s \n\n", argv[0]); return 1; } if ((outfile = fopen(argv[3], "w")) == NULL) return 2; N = (int) atoi(argv[1]); if (N <= 0 || N > MAXSIZE) return 3; k = (int) atoi(argv[2]); array[N+1] = k-1; gen (1,1); return 0; }