深度优先解决排列九位数的问题

这篇博客由IT新手撰写,介绍了使用深度优先解决将9张编号卡片放入9个编号盒子的排列问题。通过简化问题和递归思想,解释了如何实现所有可能的放法,最后给出了代码实现的思路。
摘要由CSDN通过智能技术生成

萌新深夜写一篇有关于深度优先的博客,萌新刚刚走进IT大门,简直毫无技术可言,说的不对的请指教。

所谓深度优先,我的理解它是离不开递归的,而递归这种神才用的东西,想必要把它捋顺还是很可怕的一件事,就好比大学刚开始学C语言老师给我们玩一个汉诺塔的游戏,总的来说,递归是不需要真正捋清楚里面的每一层是怎么实现的,你只需要知道   “当下应该如何思考 ”,而不需要考虑“下一步是如何做到的”。

比如在这里我介绍一个深度优先的例子:假如有编号为1-9的卡片和编号为1-9的盒子,现在需要将这九张卡片分别放入9个盒子中,并且每个盒子有且只有一张卡片,那么一共有多少种放法呢?并且告诉我所有的放法?

是不是咋一看好像并不是很难,这里深夜先介绍一种大神的算法,首先9张卡片放到9个盒子实际上就是对一个不重复的九位数进行排列,这是不是和小学初中学的那种排列方式差不多呢,接下来我们要找规律了,9个数字的排列组合如何才是重复的呢?这里我们用到了字符串的分割的方法(Split),将123456789当成一个不重复的九位数,那么

string str="123456789";

将str按这个字符串中的每一个字符来分割的话,所得到的字符串的数量应该是2,当然前提是这个九位数是不重复的,如果重复会出现什么结果呢,比如:

string str1="123456589";

按5来分割的话会得到蓝色区域的部分,也就是分割后的长度为3,这就是重复和不重复的区别了,

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值