算法
文章平均质量分 76
各种算法题的记录与详解
元元元元元yuan
我很懒,还没有添加简介
展开
-
N皇后的两种解决方法(java)
当前这个判断位置是否合法的方法也是比较有意思,可以以已经放置的N皇后为点,绘制出三条直线,然后用截距(没错,就是y=x+b中的b)表示N皇后放置之后在棋盘上的所有不合法位置,用代码表示出来的话就是一个布尔数组,然后在新的皇后放置加减偏移量就可以得到当前位置是否合法。这种方法就是枚举所有可能的路径,比如在第一层第一格放置了一个皇后,那么就进入下一层第一格,然后判断当前位置是否合法(会不会被其他的N皇后杀掉),如果不合法则不进行操作,如果合法,就放置N皇后,然后进入下一层重复放置操作。原创 2023-11-05 17:28:47 · 85 阅读 · 0 评论 -
基础算法第二章(java)
数据结构这一章不是特别的难,主要是怎么优化已有的API或者怎么对基础的数据结构变形,使之能够应用到对应的题目上。例如食物链就需要维护一个节点到根节点的距离,用来表示当前节点对应的类别。或者是堆排序,需要维护节点的插入顺序和节点所在的位置(这题饶了我好久)。总之,算法是死的,人是活(死)的,灵活变通,这才是算法。原创 2023-10-14 20:56:14 · 86 阅读 · 3 评论 -
基础算法第一章(java)
归并排序模板思路:首先进行递归,将所有的元素分成一小块一小块然后逐层进行归并,归并时设置一个临时数组用来存放比较后的数据,由于每次递归使用的元素都不一样,所以在归并时元素会被分成两组两组,不断向上进行比较,到最后一次归并只剩下两个有序数组,这是对这两个有序数组进行比较。先写check函数,判断l=mid还是r=mid,如果是l = mid,那么mid = l+r+1>>1,如果是r = mid,那么mid = l+r>>1。如果左边界等于mid,则mid需要向上取整,即mid=l+r+1/2。原创 2023-09-16 16:56:00 · 72 阅读 · 0 评论