#include <stdio.h> #include <string.h> #include <assert.h> #define MAX 26 int main(void) { char digits[MAX]; int n,k; int iCnt; int iControl; memset(digits,0,sizeof(digits)); scanf("%d",&n); printf("n = %d/n",n); assert(n <= MAX); scanf("%d",&k); printf("k = %d/n",k); assert(k <= n); for (iCnt = 0; iCnt < k;++iCnt) digits[iCnt] = iCnt + 1; while (1) { printf("{"); for (iCnt = 0; iCnt < k; ++iCnt) printf("%c ",'A'+digits[iCnt]-1); printf("}/n"); if (digits[0] == n-k+1) break; for (iControl = 0; iControl < k; ++iControl) { if (digits[iControl] == n-k+iControl + 1) break; } if (iControl == k) digits[k-1]++; else { digits[iControl-1]++; for (iCnt = iControl; iCnt < k; ++iCnt) digits[iCnt] = digits[iCnt-1]+1; } } return 0; }