万能的度友们搜下这张图

描述:输入一个数字m输出1-m的全排列。

首先思考:假如有编号为1,2,3的三张扑克牌和编号为1,2,3的3个盒子现在需要将这3张扑克牌分别放在3个盒子中有几种不同的方法。

步骤:首先走到1号盒子面前是先放1号牌还是2号牌还是3号牌?现在要生成的是全排列显然都要去尝试,现在规定一个顺序每次到了一个盒子的媔前,都先放1号再放2号,最后放3号

        首先走到1号盒子面前,先放1号牌放到1号盒子中到2号盒子面前放2号牌,到3号盒子面前放3号牌假如還有一个盒子叫做4号盒子,其实不需要这个4号盒子因为放过3号盒子的3号牌,已经生成了一个排列

        是不是结束了,肯定不是了拿你的腳指头想一下1,23这三个数字的全排列肯定不是一种。那我该怎么去想啊

策略:产生一种全排列之后需要立即返回,退回到3号盒子面前取回3好盒子中的扑克牌,再去尝试看看能不能放下其他号码的扑克牌这个不用想,你手里只有一张3号的牌肯定没有其他的牌了于是洅退回一步,回到2号盒子面前

        取出2号盒子中的扑克牌现在手里已经有了两张牌分别是2号和3号扑克牌,需要往2号盒子中放3号扑克牌到3号盒子面前把手中的2号牌放进去,就又产生了一种排列“13,2”

if (step == n+1) {//站在第n+1个盒子面前说明前面的盒子已经产生出来一种全排列了,大家应该知道这个4是干什么的了把 //站在第step的盒子面前怎么放那 //按照1,23顺序依次尝试这个就是我们定义的规则 //判断i号扑克牌在手上没有 //第step盒子已經放好了,需要走到下一个盒子面前
}

我要回帖

更多关于 帮我搜一张 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信