按照字典序输出所有 1 2 3 4 5 的全排列

没有输入,按照字典序输出所有 1 2 3 4 5 的全排列。
希望不要用递归,递归不会啊!

#include <stdio.h>
const int N = 5;
int h[6];

int main() {
    int i, j, k, l, m;
    
    for(i = 1; i <= N; ++i) {
        h[i] = 1;                                // (1)    
        for(j = 1; j <= N; ++j) {
            if(h[j]) continue;                   // (2)
            h[j] = 1;
            for(k = 1; k <= N; ++k) {
                if(h[k]) continue;               // (3)
                h[k] = 1;
                for(l = 1; l <= N; ++l) {
                    if(h[l]) continue;           // (4)
                    h[l] = 1; 
                    for(m = 1; m <= N; ++m) {
                          if(h[m]) continue;     // (5)
                          printf("%d%d%d%d%d\n", i, j, k, l, m);
                    }
                    h[l] = 0;                    // (6)
                }
                h[k] = 0;                        // (7)
            }
            h[j] = 0;                            // (8)
        }
        h[i] = 0;                                // (9)
    }
    return 0;
}
  • $(1)(2)(3)(4)(5)$ 代表标记;
  • $(6)(7)(8)(9)$ 代表标记置空;

扩展阅读