这些年我做过的项目

安卓Canvas渲染引擎——hEngine

教程收集

欢迎访问hanyeah的blog

20
2019
03

生成全排列-递增进位制法

递增进位制法 

这个算法是基于序列的递增进位制数。递增进位制数是指数字的进制随着位数的递增而递增。一般情况下,数字最右边的进制是2,次右边的进制是3,以此类推。n位递增进位制数一共包含n!个数字,所以它可以与全排列生成算法结合在一起。

20
2019
03

八皇后问题

八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当n = 1或n ≥ 4时问题有解。

20
2019
03

0-1背包问题

背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。

13
2019
03

闭包

闭包算是js里边比较难理解的一个概念了,虽然网上一搜一大堆,但是都没说到点上,还是《JavaScript权威指南》里边讲得好。

12
2019
03

多边形拖动变形

问题:一个四边形,固定一个顶点,拖动对角线上的另一个顶点时,四个边怎么变化?任意多边形呢?

12
2019
03

动态规划

动态规划(dynamic programming)与分治方法相似,都是通过组合子问题的解来求解原问题(在这里,“programming”指的是一种表格法,并非编写计算机程序)。分治方法将问题划分为互不相交的子问题,递归的求解子问题,再将它们的解组合起来,求出原问题的解。动态规划应用于子问题的解重叠的情况,即不同的子问题具有公共的子子问题。在这种情况下,分治算法会做许多不必要的工作,它会反复地求解那些公共子问题。而动态规划算法对每个子子问题只求解一次,将其保存在一个表格中,从而无需每次求解一个子子问题的解时都重新计算,避免了不必要的计算工作。

20
2019
02

反演变换

画一个圆,与已知的三个圆相切。

20
2019
02

磁铁

在磁铁周围撒一些小铁屑,敲击桌面,会慢慢显示出磁感线的轮廓来。用程序模拟这一过程。

15
2019
02

风扇

问题:浏览器1秒钟刷60帧,电风扇的扇叶旋转速度为n转/秒,怎么用程序模拟出风扇扇叶旋转的效果。

15
2019
02

javascript中的btoa和atob方法

看别人的代码时发现window.atob('abc'),之前不知道还有atob方法,于是学习了一下。