这是一个求排列的问题,要求输出从 111 到 nnn 的 nnn 个整数中任意取 rrr 个进行排列的所有情况。解决这个问题可以使用深度优先搜索( DFSDFSDFS )的方法。
111 . 定义一个数组 aaa 用于存放当前排列的数字。
222 . 定义一个数组 bbb 用于标记数字是否被使用过。初始化为 falsefalsefalse 。
333 . 读取输入的整数 nnn 和 mmm ,分别代表整数的范围和取数的个数。
444 . 定义深度优先搜索函数 dfsdfsdfs ,参数 ttt 表示当前排列的位置。
−-− 如果当前位置 ttt 等于 mmm +++ 111 ,说明已经排列完毕,输出当前排列。
−-− 否则,从 111 到 nnn 遍历每个数字,如果该数字没有被使用过,标记为已使用,将其放入当前位置,然后递归调用 dfsdfsdfs ( ttt +++ 111 ) 进行下一层的搜索。最后,恢复状态,标记为未使用,以便尝试其他可能性。
555 . 在 mainmainmain 函数中调用 dfsdfsdfs ( 111 )开始搜索。