数学与算法
数学及算法
赢一把就睡
做一件事最好的时间是十年前,其次是现在
展开
-
深度优先搜索+剪枝暴力搜索数独的所有解法
public class Sudu { private int count = 1; public boolean isValidSudoku(char[][] board) { for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { if (board[i][j] == '.') { .原创 2020-10-02 16:30:46 · 382 阅读 · 0 评论 -
N皇后问题---采用深度优先搜索算法求解
一.问题描述 将棋子放在N*N的棋盘中,要求两个棋子不能在同一列,同一行及同一斜对角线上二.代码import java.util.HashMap;import java.util.Map;public class Queen { private int count = 0; private Integer n = 0; //棋子已有的坐标 private Map<Integer, Integer> location = ne...原创 2020-07-25 21:40:27 · 262 阅读 · 0 评论 -
浅析深度优先搜索算法
前两天参加了一个笔试,最后一道算法题,采用深度优先算法就能解决,但当时没有做出来,所以在网上查了下资料,写了这篇博客。一.深度优先算法定义 顾名思义,深度优先搜索算法就是指在图中搜索时,沿着一条路走到黑,直到碰的头破血流了,然后回头,回到起点,在从起点出发,沿着未曾走过的路,继续去碰,直到所有的路都走完。这种每次一条道到黑的搜索过程称为深度优先二.示例 如图所示:深度优先查看从1-->2--->5,返回1,然后1-->--6,返回1,在到4,返回1,发...原创 2020-07-19 14:42:46 · 458 阅读 · 0 评论 -
选择排序
1.算法定义 第i趟排序从(elem[i],elem[i+1],...,elem[n-1])中选择最小的元素放到i这个位置上2.示例 int str={1,8,3,5,9,15,8,18} 第一趟结果:1,8,3,5,9,15,8,18 第二趟结果:1,3,8,5,9,15,8,18 以此类推,每次从(elem[i],...elem[n-1])中选最小的元素放到elem[i]上3.java实现 public class Selec...原创 2020-06-19 22:44:15 · 367 阅读 · 0 评论 -
冒泡排序
1.算法定义 将序列中的元素两两比较,如果不相等,就交换,以此类推,共比较n轮2.示例 int str={18,8,15,9,5,3,8,1} 通过冒泡排序按从小到大升序排列 第一轮结果:8,15,9,5,3,8,1,18 第二轮结果:8,9,5,3,8,1,15,18 以此类推:每次去i={1,,n-2}位置所在的元素跟(0,n-2-i)元素比较 每次比较完后,大的元素每次都往上冒,冒泡算法因此得名3.时间复杂度 最好的...原创 2020-06-19 22:32:08 · 118 阅读 · 0 评论 -
回溯算法
一.概述 回溯法有"通用的解题法"之称,用它可以系统的搜索一个问题的所有解或任一解,它在问题的解空间中,按深度优先策略,从根结点出发搜索解空间树,查看所有符合定义的解二.算法框架 2.1 构造解空间树 2.2 深度优先搜索解空间树,查看所有的解 三.实例 3.1问题描述 这个问题来源于leetcode上的一个题目,有...原创 2020-01-25 12:33:23 · 1713 阅读 · 0 评论