首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    leetcode-51. N 皇后

    这道题用基于集合的回溯的方法。在主体方法中,先定义变量储存最终结果集的变量,定义跟传入的皇后个数一样多的整形数组来储存皇后摆放的位置,对数组全赋值为 -1 也就是一个初始化的操作,定义三个集合分别记录每一列以及两个方向的每条斜线上是否有皇后,进行回溯,最终完回溯后返回最终结果集即可。   进入回溯算法之前对皇后个数与当前行数进行判断,当皇后个数跟行数一样的时候证明符合条件且经排列完成,则需要生成符合要求的棋盘布局,并将本次解法加入结果集数组中,也就是本次成功的布局;当皇后个数跟行数不一样的时候证明排列还在进行中,则需要判断哪一行那一列符合要求能放入皇后,先判断该列,如果该列已经有了皇后则进行下一个 for 循环。如果该列没有,则判断两个方向的斜线是否有皇后,如果任一斜线上已经有了皇后则进行下一个 for 循环,如果没有皇后,则确定这个位置符合放置皇后,将此时的行数作为数组的下标,列数作为该数组的对应行坐标的值存进去,记录入当前选择的位置和受影响的列和两个斜线。接着进入下一个递归,列数不变但是行数加一,其它参数一样。记得还原当前选择的位置,还原受影响的列和两个斜线,让下一次通过层次的选择不受影响,这是回溯的特性。   上文提到的生成结果棋盘的方法是先定义存储棋盘的结果集,用 for 循环生成 n 行 n 列的棋盘,n 为皇后个数。在 for 循环中定义一个长度为皇后个数的 char 数组,将其全部填充 ‘.’,再将上边记录皇后可以放的位置的对应地方用 ‘Q’ 覆盖 ‘.’,将 char 类型的数组转换为 String 类型添加到结果集中,并返回存储棋盘的结果集即可完成棋盘制作。   以上提到的两个方向的斜线的定义如下:

    06

    错排公式 详细解答

    错排问题:有n个正整数1,2,3,……n,将这n个正整数重新排列,使其中的每一个数都不在原来的位置上,这种排列称为正整数1,2,3,……n的错排,问这n个正整数的排个数是多少? 设这n个正整数的错排个数为an,为了探求an的表达式,我们先从最特殊的情形入手。 当n=1时,由于只有一个数1,不可能有错排,所以a1=0. 当n=2时,两个数的错排是唯一的,所以a2=1. 当n=3时,三个数1、2、3只有2、3、1和3、1、2两种错排,所以a3=2. 当n=4时,四个数1、2、3、4的错排有:2、1、4、3;2、3、4、1;2、4、1、3;3、1、4、2;3、4、2、1;4、1、2、3;4、3、1、2;4、3、2、1,共有9种错排,所以a4=9. 上面使用的是枚举法,当n较大时,这种方法是很麻烦的、难以解决问题的,必须另辟蹊径,现在考虑用排除法求出1、2、3、4这四个正整数的错排的种数,从中摸索出规律。 对于四个正整数1、2、3、4,这四个数的全排列数为4!。 有一个数不错排的情况应排除,由于1排在第1位的有3!种,2排在第2位的有3!种,……4排在第4位的有3!种,所以共应排除4×3!种。 然而在排除有一个数不错排的情况时,把同时有两个数不错排的情况也排除了,应予以补上,由于1、2分别排在第1、第2位上的情况共有2!种,同理1、3分别排在第1、第3位上的情况也有2!种,……,这四个数中同时有两个数不错排的情况共有种,所以应补上 种。在补上同时有两个数不错排的情况时,把同时有三个数不错排的情况也补上了,应予以排除,四个数中有1、2、3不错排,1、2、4不错排,1、3、4不错排和2、3、4不错排共 种情况,所以应排除 种。 在排除同时有三个数不错排的情况时,把同时有四个数不错排的情况也排除了,所以应补上同时有四个数不错排的情况仅1、2、3、4这一种。

    00

    小朋友学数据结构-10大排序算法(2):直接插入排序

    在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 举例:数组a[] = {57, 68, 59, 52}。 比较方法是每个数与前面的数比较。 第一个57,前面没有数,不用比较。 第二个数68,与前面的57比较,因为68 > 57,所以不用换位置。 第三个数59,先与前面的68比较,因为59 < 68,所以需要与更前面的数57比较,因为59 > 57。所以无论57的前面有没有数,都不用再比较了。把59插入到57和68之间就可以了。 第四个数52,前面有三个数:57,59,68。先与68比,52 < 68,需要再与59比,52 < 59,需要再与57比,52 < 57。此时前面没有数了。所以把52插入到57的前面。 最终的结果为52,57,59,68。

    01

    【蓝桥杯Java_C组·从零开始卷】第四节(附)、河图洛书【九宫格】(卷王必备,不想卷的略过,使用优化暴力破解,与网上莫名其妙的规律不一样)

    河图与洛书是中国古代流传下来的两幅神秘图案,历来被认为是河洛文化的滥觞,中华文明的源头,被誉为宇宙魔方。 相传,上古伏羲氏时,洛阳东北孟津县境内的黄河中浮出龙马,背负河图,献给伏羲。伏羲依此而演成八卦,后为《周易》来源。又相传,大禹时,洛阳西洛宁县洛河中浮出神龟,背驮洛书,献给大禹。大禹依此治水成功,遂划天下为九州。又依此定九章大法,治理社会,流传下来收入《尚书》中,名《洪范》。《易・系辞上》说:河出图,洛出书,圣人则之,就是指这两件事。

    02

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券