表示のルールを明確にしなければコードが書けないといっているに、
表示のルールを明確にしてもらえないのはなぜでしょうか?
しかたがないので、次のように決めさせてもらいました。
1 から n までの数字を 1つずつ使用し、それらを最大 n 個まで並べて表示する。
ただし、n 個に満たない場合、後続には 0 を補う。重複は許さない。
コード:
#include <stdio.h>
#define N 12
int n, a[N], u[N+1];
void gen(int i)
{
if (i < n)
for (int j = 1; j <= n; j++)
if (!u[j]) {
a[i] = j, u[j] = 1;
for (int k = 0; k < n; k++) printf(" %d", a[k]);
putchar('\n');
gen(i + 1);
a[i] = 0, u[j] = 0;
}
}
int main(void)
{
while (printf("n: "), scanf("%d", &n) == 1) gen(0);
}
n が大きいと表示の個数が爆発的に増加するため、
実際には、n は 10程度が限界となります。