/* Non-recursive, debatably readable solution to */ #include #include void PrintXY(int n) { char s[n+1]; int i; for (i = 0; i < n; i++) s[i] = 'X'; s[n] = '\0'; while (i >= 0) { puts(s); for (i = n-1; i >= 0; i--) { if ('X' != s[i]) continue; s[i] = 'Y'; for (int j = i+1; j < n; j++) s[j] = 'X'; break; } } } int main(int argc, char **argv) { PrintXY(atoi(argv[1])); return 0; }