ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

题目41

2022-07-21 18:04:52  阅读:347  来源: 互联网

标签:输出 排列 题目 213 示例 41 给定 输入


 给定参数n 从1到n会有n个整数 1,2,3,...n
    这n个数字共有n!种排列 按大小顺序升序列出所有排列情况
    并一一标记
    当n=3时,所有排列如下
    "123","132","213","231","312","321"
    给定n和k 返回第n个排列

    输入描述
    第一行为n
    第二行为k
    n的范围是 1~9
    k的范围是 1~n!

    输出描述
    输出排列第k位置的数字

    示例一:
    输入
    3
    3
    输出
    213

    示例二:
    输入
    2
    2
    输出
    21
<?php
$n=trim(fgets(STDIN));
$k=trim(fgets(STDIN));
solution($n,$k);

$res=[];
function solution($n, $k)
{
    global $res;
    $num = [];
    for ($i = 0; $i < $n; $i++) {
        $num[] = $i + 1;
    }
    permute($num, []);
    $new = [];
    foreach ($res as $v) {
        $new[] = intval(implode('', $v));
    }
    sort($new);
    echo $new[$k - 1];
}

//PHP实现全排列
function permute($nums, $arr)
{
    global $res;
    if (count($nums) == count($arr)) {
        $res[] = $arr;
        return;
    }
    foreach ($nums as $val) {
        if (!in_array($val, $arr)) {
            $arr[] = $val;
            permute($nums, $arr);
            array_pop($arr);
        }
    }
}

 

标签:输出,排列,题目,213,示例,41,给定,输入
来源: https://www.cnblogs.com/weiguomiao/p/16502872.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有