算法-回溯算法
天涯泪小武
开源贡献者,有代码洁癖。京东coder。
展开
-
Java简单实现滑动窗口
由于最近有一个统计单位时间内某key的访问次数的需求,譬如每5秒访问了redis的某key超过100次,就取出该key单独处理。这样的单位时间统计,很明显我们都知道有个边界问题,譬如5秒内100次的限制。刚好前4.99秒访问都是0,最后0.01秒来了100次,5.01秒又来了100次。也就是访问有明显的毛刺情况出现,为了弱化这个毛刺情况,我们可以采用滑动窗口。滑动窗口滑动窗口的主要原理...原创 2019-11-01 17:28:52 · 15968 阅读 · 5 评论 -
回溯算法解数独问题(java版)
下面来详细讲一下如何用回溯算法来解数独问题。 下图是一个数独题,也是号称世界上最难的数独。当然了,对于计算机程序来说,只要算法是对的,难不难就不知道了,反正计算机又不累。回溯算法基本上就是穷举,解这种数独类的问题逻辑比较简单。不管算法懂不懂,先把类建出来,变量定义好,那放大学试卷上就是可以拿两分了。package shudu;/** * Created by w原创 2016-03-17 15:22:36 · 20374 阅读 · 9 评论 -
回溯算法解八皇后问题(java版)
八皇后问题是学习回溯算法时不得不提的一个问题,用回溯算法解决该问题逻辑比较简单。 下面用java版的回溯算法来解决八皇后问题。 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 思路原创 2016-03-21 12:07:30 · 17653 阅读 · 6 评论 -
回溯算法解迷宫问题(java版)
以一个M×N的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计程序,对任意设定的迷宫,求出从入口到出口的所有通路。 下面我们来详细讲一下迷宫问题的回溯算法。 该图是一个迷宫的图。1代表是墙不能走,0是可以走的路线。只能往上下左右走,直到从左上角到右下角出口。 做法是用一个二维数组来定义迷宫的初始状态,然后从左上角开始,不停的去试探所有可行的路线,碰到1就结束本次原创 2016-03-21 17:16:53 · 11501 阅读 · 5 评论 -
傻瓜方法求集合的所有子集问题(java版)
给定任意长度的一个集合,用一个数组表示,如{"a", "b","c"},求它的所有子集。结果是{ {a}, {b}, {c}, {a,b}, {a,c}, {b,c}, {a,b,c}}和一个空集。 下面讲的就是如何用一个原始的傻瓜方法(非算法)求它的所有子集。 首先我们知道是它的子集个数是2^length,如果长度是3,那子集就共有2的3次方=8个,包括空集。 求子原创 2016-03-22 17:22:50 · 3169 阅读 · 0 评论