莫比乌斯反演 2021-12-17 04:58 采纳率: 100%
浏览 54
已结题

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

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

  • 写回答

1条回答 默认 最新

  • 英雄哪里出来 2021年博客之星Top1 2021-12-17 05:02
    关注
    #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)$ 代表标记置空;

    扩展阅读

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月17日
  • 已采纳回答 12月17日
  • 创建了问题 12月17日