原创 迷宮系列(四)其他細節和DFS的實際應用(重要)

一、其他細節 1.如何“走”迷宮 迷宮只允許向[上、下、左、右]四個方向前進,如果手寫則過於麻煩,考慮每種移動對應的橫縱座標變化,有以下代碼: int dx[] = {-1, 0, 1, 0}; //上右下左 int dy[] =

原创 C語言實現簡單的單向鏈表

鏈表的實現: 鏈表節點實現: typedef struct _node { int data; //數據存儲區,可以改爲void*以支持各種類型 struct _node *next; } Node; 鏈表實現

原创 C語言指針實現簡單棧

stack:FILO 操作:push 向棧頂壓入一個元素 pop 從棧頂彈出元素,pop一個空棧返回-1 節點結構體: typedef struct _node { int data; struct

原创 C語言中產生真隨機數的方法,帶封裝

1.rand()函數 衆所周知,C語言提供的rand()函數,實際上是根據srand(seed)產生的一種映射關係,一種簡單的寫法是這樣的: srand(((unsigned)time(NULL)); r = rand() % num;

原创 C語言指針實現簡單二叉排序樹

二叉排序樹排序規則: 左節點 <= 根節點 <= 右節點 樹節點: typedef struct _node { int data; struct _node *leftChild; struct _node *r

原创 k均值(k-means)算法

目錄 寫在前面 聚類 數據集 k​均值(k-means)算法 聚類性能度量 初始化問題 k-means++算法 存在的問題 後記 寫在前面 無監督學習算法主要作用在訓練樣本標記信息未知的數據集上,它的目的主要是通過對無標記訓練樣本的學

原创 迷宮系列[目錄]及[源碼]

迷宮系列(一)棧、隊列、迷宮的表示和文件操作 迷宮系列(二)搜索、BFS、DFS 迷宮系列(三)利用BFS/DFS的數據得到最短路/通路 迷宮系列(四)其他細節和DFS的實際應用(重要) 源代碼: 1. BFS #include <std

原创 迷宮系列(一)棧、隊列、迷宮的表示和文件操作

一、棧 棧(stack)又名堆棧,它是一種特殊的線性表。其限制是僅允許在表的一端進行插入(push)和刪除(pop)運算。這一端被稱爲棧頂,相對地,把另一端稱爲棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面

原创 關於交叉熵(Cross Entropy)與Softmax

目錄 寫在前面 KL散度 交叉熵 Softmax 交叉熵與Softmax的關係 交叉熵損失 Softmax的求導 堆疊+向量化 其他關於Softmax函數的問題 贈品 寫在前面 Softmax、交叉熵、交叉熵損失是機器學習與神經網絡模

原创 機器學習 西瓜書 第一章 [讀書筆記+習題]

Chapter 01 緒論 學習過程爲了找出或逼近真相 對於離散值的學習任務稱爲[分類] (classification) 對於連續值的學習任務稱爲[迴歸] (regression) 奧卡姆剃刀:若有多個假設與觀察一致,則選最簡單的那個

原创 迷宮系列(三)利用BFS/DFS的數據得到最短路/通路

一、如何得到最短路 算法性質分析 1.BFS性質: 該算法需要在發現所有與這個源節點距離爲k的節點後,纔回去發現與這個源節點距離爲k+1的節點。 故BFS對一個圖G的搜索是嚴格分層的,如果一個點V在第n層被發現,那麼它距離源節點的最短距離

原创 迷宮系列(二)搜索、BFS、DFS

目錄 思考:搜索是如何進行的 一、廣度優先搜索(BFS) 二、深度優先搜索(DFS) ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~. 思考:搜索是如何進行的 我們用圖的遍歷來引入搜索思想 圖的遍歷

原创 C++ Primer 初學心得(壹)

C++ Primer初學心得(壹) 一、傳遞指針 //利用指針交換兩個數 #include <iostream> #include <dos.h> using namespace std; void swap(int *a, int

原创 C語言指針實現簡單隊列

節點結構體: typedef struct _node { int data; struct _node *next; } Node; 隊列結構體: typedef struct linkedlist { Node