题解 | 全排列

全排列

https://www.nowcoder.com/practice/1d1fe38275da44b5848add89f9e223b1

遍历1-n 以每个数作为排列的开始,dfs递归回溯向临时数组中加入新元素直到临时数组长度等于n,将其加入结果集中。

将结果集按字典序排序输出每一行。

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){
        const n = Number(line);
        const result = [];
        
        const dfs = function(seq) {
            if (seq.length === n) {
                result.push(seq.join(' '));
                return;
            }

            for (let i = 1; i <= n; i++) {
                if (seq.includes(i)) continue;
                seq.push(i);
                dfs(seq);
                seq.pop();
            }

        };

        for (let i = 1; i <= n; i++) {
            dfs([i]);
        }

        result.sort();

        result.forEach(val => console.log(val));
    }
}()

全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务