minz的筆記本

minz的筆記本

= 這是一個分享我學習筆記的空間 =

演算法

# DP跟divide and conquer差在哪 **分而治之法 (Divide and Conquer)** 如果問題很大,我們就把問題**分解成較小的子問題**,然後分別解決這些子問題。一旦所有的子問題都解決了,我們就把所有子問題的解決方案組合起來,找到大問題的解決方案。分治法的限制是子問題應該與原問題屬於同一類型。例如,如果主要問題是排序,那麼子問題也應該是排序。分治法的策略本質上是遞迴的。 動態規劃(**Dynamic Programming**) 則是將優化問題分解成更簡單的子問題,並**存儲**每個子問題的解決方案,以便每個子問題只需要解決一次。一旦所有的子問題都解決了,我
more...

資料結構

# Circular Queue ```mermaid graph LR A[A] --> B[B] B --> C[C] C --> D[D] D --> A[A] ``` 一般的隊列(Queue):FIFO | | Queue | Circular Queue | | :------------: | :------------------------------------------:
more...

離散數學

# 背包問題 背包問題(Knapsack Problem)是一個經典的優化問題,屬於組合優化問題的一種,有一個固定容量的背包和一組具有不同價值和重量的物品,我們需要在限制背包容量的條件下,選擇最佳的物品組合,使得**總價值最大化**,可以使用**動態規劃**、**貪婪算法**來找到最佳解。 背包問題可以分為兩種主要的變體: 1. 0/1 背包問題(0/1 Knapsack Problem):每個物品要麼全部放入背包,要麼完全不放入背包,**無法將物品分割**為部分放入。 2. 分數背包問題(Fractional Knapsack Problem):每個物品**可以按比例分割**,可以將物
more...

線性代數

# 求法向量 要求一個平面或線的法向量,可以使用幾何或向量運算的方法。法向量是與該平面或線垂直的向量。 以下是一個簡單的範例來說明如何求一個平面的法向量: 考慮一個平面的一般方程式:ax + by + cz + d = 0 根據這個方程式,我們可以觀察到,係數 a、b 和 c 對應於平面的法向量的 x、y 和 z 分量。 因此,平面的法向量是 N = (a, b, c)。 這樣,我們就找到了平面的法向量。 # 線性獨立 在線性代數中,線性獨立是指一組向量或一組函數的集合,其中沒有一個向量或函數可以表示為其他向量或函數的線性組合。 - 換句話說,如果一組向量或函數中的每個成員都
more...

物件導向

# call by value (傳值) - 在Call-by-Value中,函式的參數是被傳遞值的**副本**。 - 在函式內部,對參數的修改不會影響到原始的變數。 :::info ### call by address (傳位置) - 傳了實際的記憶體位置進去function - 也是`call by value`的變形,但傳遞的是**記憶體地址**。 - 在函式內部,通過指標可以修改原始變數的值。 ::: # call by reference (傳參考) - 在Call-by-Reference中,函式的參數接受原始變數的參考(或記憶體位置)。 - 在函式內部,對參數的修
more...

作業系統

# Race Condition 是什麼? **競爭條件 (Race Condition)** 兩個或兩個以上的進程或線程在更改 **共享資源(Share Resource)** 時會發生的情況。 例如,假設我們有兩個Process A 和 B,都想要訪問同一個共享變量。 如果 A 和 B 都嘗試在同一時間讀取和修改這個變量,那麼就**可能**會產生競爭條件。 如果沒有提供**互斥存取**,我們**無法確定** A 和 B 的執行順序,所以最終的結果可能會有所**不同**。 解決方式: - 鎖(Locks) - 原子變量(Atomic Variables) # 同步 (Synchro
more...

機率與統計

# 互斥和獨立事件 **互斥事件**指的是兩個或多個事件不可能同時發生的情況。 如果事件 A 發生,那麼事件 B 就不可能發生,且反之亦然。 數學上,兩個互斥事件 A 和 B 的概率滿足 P(A ∩ B) = 0,**即它們的交集為空集**。 例如,擲一個骰子,事件 A 是出現奇數點數,事件 B 是出現偶數點數。 由於奇數和偶數是互斥的,因此在一次擲骰子的結果中,不能同時出現奇數和偶數。 因此,事件 A 和事件 B 是互斥事件。 --- **獨立事件**指的是兩個或多個事件的發生與其他事件的發生無關。 如果事件 A 發生與否**不會影響**事件 B 發生的概率。 數學上,獨立事件 A
more...

程式題目

# 印星星 ```cpp 印星星 #include <iostream> using namespace std; void printUpperTriangle(int n) { for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { cout << "* "; } cout << endl; } } void printLowerTriangle(int n) { for (int i = n; i > 0; i--) {
more...

排序演算法

- stable sorting : 相同的值排序後順序皆一樣 - unstable sorting : 相同的值排序後順序可能會不一樣 # 初階排序 ```cpp 排序演算法 #include <iostream> #include <vector> #include <algorithm> using namespace std; // Bubble Sort mark:3-4 void bubbleSort(vector<int>& arr) { int n = arr.size(); for (int i = 0; i < n - 1; i++) {
more...