2.5k2 分鐘

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

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

# 找出矩陣中第二大的數字 找出矩陣中第二大的數字 #include <iostream>#include <vector>#include <climits> // 包含 INT_MIN 的定義using namespace std;int findSecondLargest(const vector<vector<int>>& matrix) { int largest = INT_MIN; // 最大數字 int secondLargest 
8k7 分鐘

# 印星星 印星星#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 prin
2k2 分鐘

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

# Circular Queue 圖graph LR A[A] --> B[B] B --> C[C] C --> D[D] D --> A[A]一般的隊列(Queue):FIFO Queue Circular Queue 資料排列方式 線性順序排列 循環順序排列,即將尾端和前端連接起來 插入和刪除操作 刪除操作都在前端進行插入操作都在尾端進行 插入和刪除操作不固定可以在任何位置進行 記憶體空間 更多 較少 效率 低 高 # DFS and BFS 深度優先搜尋 (Depth-First Search, DFS)
9591 分鐘

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