原创 從全排列和八皇后問題談回溯

一般來講,人們常常提及的回溯,通常指走不通就掉頭。另一種情況,路走完了,回到開始的地方重新選擇另一條路,也可稱之爲回溯——下面是重點。 幾乎所有回溯的寫法,都是for循環裏嵌套着遞歸。如果不存在走不通的情況,則無條件遞歸,否則,就用if判

原创 18行代碼3重循環解決最長公共子序列

這個三重循環算是比較複製和難的了,前面我寫了一個和這個類似但比這簡單的二重循環,有興趣的同學可參看:從最長子串問題談continue的使用。 說實話,網上的看的懂,但好像寫不出2333.... 所以我就以自己的理解,如果有錯誤的地方,歡迎

原创 從最長子串問題談continue的使用

說來慚愧,寫了一年半的代碼,卻從未使用過continue!——相信和我一樣甚至時間比我還要長的都大有人在吧! 好了,言歸正傳,先上代碼一睹爲快。 <?php $a='zaqbdacde'; $b='zaqbacdef'; for($i=0

原创 用全排列的方法解決八皇后問題

用百度搜索八皇后問題,幾乎清一色都是用回溯,有興趣的同學可參考:從全排列和八皇后問題談回溯。 解決一個問題,我們應該充分利用已有的條件,化繁爲簡。 $a=[0,1,2,3,4,5,6,7]; 可以看到,這個數組的下標剛好也是0到7——對應

原创 從最短路徑談動態規劃和貪心算法

一言以蔽之:動態規劃,從全局最優考慮;最短路徑,從當前最優考慮。 先考慮下面的圖 可以很容易地看出,如果使用貪心算法,從a到e的路線將是:a->b->c->d->e,而採用動態的規劃的路線則是:a->c->e。 貪心算法的優點是代碼非常

原创 淺談遞歸和迭達

衆所周知,幾乎所有的算法都離不開遞歸和迭代,無論是從小白剛接觸的冒泡排序,還是日後進階的深度和廣度搜索。本文試就二者本質的區別與聯繫討論開來,遺漏錯誤之處,煩請指出。首先,從一輸出到十,最先想到的肯定是:for($i=1;$i<=10;$

原创 flex 的封裝和簡化

.COL{ display:flex; flex-direction:column; height:100vh; width:100vw; } .flex{ display:flex; } .col{ display:f

原创 前端mvc加css in js

<style> body{margin:0;} li{list-style:none;cursor:pointer;} </style> <body></body> <script src=jq.js></script> <script

原创 觀察者模式

<script> a=[] Object.prototype.Push=function(){ length=this.length setInterval(()=>{ if(this.length > length ){

原创 事件監聽

<script> a=[] Object.prototype.Push=function(callback){ length=this.length setInterval(()=>{ if(this.length > leng

原创 異步讀取文件的原理

open函數內部不斷判斷是否讀取就緒,就緒後調用回調函數。 <script> file=[] a={} a.txt='wait for long' a.js='i am js file' function sleep(delay) {

原创 歡迎光臨

<meta charset=utf-8 /> <style> body{margin:0;overflow:hidden} div,li{list-style:none;cursor:pointer;font-size:50;trans

原创 頁面響應數組的改變

<meta charset=utf-8 /> <style> body{margin:0} li{list-style:none;cursor:pointer} .nav{display:flex;flex-direction:colu

原创 這react尼瑪太狂野了

<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hello React!</title> <script src="https://cdn.staticfile

原创 簡易聊天室

<style> body{margin:0px;} li{list-style:none;} .enter{ height:100%; display:flex; justify-content:center; align-it