排列组合全遍历算法问题

636f6c696e 2018-07-17 10:24:06
如果我想遍历所有每一位数字都不一样的十位数,例如1234567890,有什么简单高效的遍历算法么?
我能想到的算法是,遍历每一个十位数,对每个数字都去比较每一位是否有重复,这样的算法既不简洁,效率又低。
...全文
871 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
丁劲犇 2018-11-22
  • 打赏
  • 举报
回复
上面这个排列组合,非常非常的灵活。
丁劲犇 2018-11-22
  • 打赏
  • 举报
回复
https://blog.csdn.net/goldenhawking/article/details/80037669
lx3275852 2018-07-17
  • 打赏
  • 举报
回复
全排列,本身10! 大约是3.8*10^7种,你遍历10位数是9.0*10^10啊,大约3000倍那…… 无脑方式:循环大法。2个数全排列就两层循环,4个数全排列就4层循环,当然10个数全排列的话…那就10层循环呗……只要注意前面几位用过的数就不要再用就好了,还是很高效的…… 高级方式:用递归,递归里嵌套循环(回溯法,或者说是深搜),其本质是上面无脑方式的10层循环,只不过代码量少,而且比较通用,就是4个数全排列和10个数全排列不需要改代码。不像4层循环改10层那么麻烦…… 代码就不上了,简单的全排列,不需要考虑去重复,很无脑的,随便百度都有一大堆,主流都是递归套循环,swap为主的。但是新手去理解还是稍微有点烧脑的…这里的核心其实只有一点,那就是0不能放在第一位,不然就不是10位数而是9位数了,注意了这一点就行了……

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧