【C++ 筆記】列舉(Enumeration) - part 34
【C++ 筆記】列舉(Enumeration) - part 34很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! Introduction列舉(Enumeration),簡稱 Enum,是 C++ 中的一種使用者自定義資料型態(User-Defined Type)。可用於定義一組命名的整數常數,這些常數通常用來表示狀態、選項或模式。 Enum 有助於為整數值賦予有意義的名稱,以提升程式碼的可讀性與可維護性。 主要適用於我們對某項有少量可能數值(如方向、星期幾等)時。 使用 Enum 的情境大致上有以下這三種(可能更多,只是舉例而已): 方向:東、西、南、北 遊戲狀態:選單中、遊戲中、暫停、遊戲結束 星期幾:週一到週日 定義 enum 與建立一個 enum在 C++98/03 舊標準中,用關鍵字 enum 來定義一個 enum,被稱為「非強型別列舉」或「傳統列舉」。 基本語法: 1234...
【C++】競程筆記(DP:狀態跟轉移)
【C++】競程筆記(DP:狀態跟轉移)題目範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 非線性遞迴題型481 . [Tutorial] 別離太遠 續 Problem Source:https://oj.ntucpc.org/problems/481 這題要求的不是方法數,而是「最大值」。 這題的上一題已經知道要怎麼求方法數了,結果就是一個費氏數列,而這次要求的是讓每個人的能力值總和到最大,那該怎麼求呢? 遞迴式長得差不多,先定義 base case: $a_1, n = 1$ $a_1 + a_2, n = 2$ 剩下的情況可以寫成 $max(f(n - 1), f(n - 2)) + a_n$ ,因為要最大化能力值,所以從第 n 個的前兩位(編號差不能超過 2)挑出最大的那個。 範例程式碼: 1234567891011121314151617181920212223#include <bits/stdc++.h>using namespace std;using ll = long long;int main(){ int N; ...
【C++】競程筆記:字串處理
【C++】競程筆記:字串處理本筆記僅個人學習用途,斟酌參考。 額…我發現我的字串處理實在是太爛了,所以做這篇來挽救一下我的字串題目。 String 宣告方式有四種: 1234string s1; // 空字串 ""string s2 = "Hello"; // 初始化為 "Hello"string s3(s2); // 複製 s2 -> "Hello"string s4(5, 'A'); // 重複字元 -> "AAAAA" s1 什麼都沒寫,僅宣告的話就是空字串。 s2 賦值 "Hello" 字串,則表示 s2 初始化為 "Hello"。 s3(s2) 括號 s2 寫法就是 s3 複製 s2 的 "Hello"。 s4(5, 'A'),前面是次數,後面是字元,表示重複 5 次 'A'。 輸入方式輸入...
自動機理論(DFA)
自動機理論(DFA)歡迎你點進本篇文章~本篇主要針對計概上課內容做筆記,若你對文章感興趣的話,不妨按下愛心或追蹤我!感謝你的觀看~ 什麼是 DFA 確定有限狀態自動機(Deterministic Finite Automata, DFA)是一種能夠實現狀態轉移的自動機(automaton),屬於計算理論中的基礎模型。Wikipedia 其中狀態(State)指的是機器在執行過程中的一個特定情況或條件,例如一個電燈開關他的狀態,有可能是開著的狀態,或是關著的狀態。 而所謂的轉移(transfer)就是狀態可能從原本是 ON 的狀態變成 OFF 狀態的過程,或是相反過來,OFF 變成 ON 這個狀態的過程。 狀態(State)狀態可以分成三種: 起始狀態(Start State):機器開始時的初始狀態,通常用符號 $q_0$ 或 $s$ 去表示。 接受狀態(Accept State):也稱最終狀態,就是在當機器讀完所有輸入後停在該狀態時,就表示接受該輸入字串。 一般狀態(States):其他的中間狀態,負責處理輸入過程的各種情況。 起始狀態的圖長以下這樣,會先有一個箭頭指向起始...
【Uva 題庫解題】C++ 個人解題筆記 - part5
【Uva 題庫解題】C++ 個人解題筆記 - part5本次題庫擷取自 CPE 2025/12/09 歷屆考題。 1. Uva 10079 - Pizza CuttingPDF Source:https://onlinejudge.org/external/100/10079.pdf Uva Online Judge:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1020 Zerojudge:https://zerojudge.tw/ShowProblem?problemid=c024 解題思路: 先從最小情況 base case N = 0 開始推算起: N = 0:表示不切,輸出 1 塊。 N = 1:切 1 刀,輸出 2 塊。 N = 2:切 2 刀,且第 2 刀要跟第 1 刀相交才能切最多塊,輸出 2 + 2 = 4 塊。 N = 3:切 3 刀,第 3 刀要跟前 2 刀相交才能切最多塊,輸出 4 + 3 = ...
隨機存取協議:Pure ALOHA、CSMA
隨機存取協議:Pure ALOHA、CSMAHello Guys, I’m LukeTseng. 本篇將來介紹什麼是 Pure ALOHA、CSMA、CSMA/CD 等等,這些都是運作在 Data link layer 上面的。若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! 另外本篇文章主要針對上課內容製作筆記,斟酌參考~ 什麼是隨機存取協議(Random Access Protocols:RAPs)?這是計算機網路中的資料鏈結層(Data Link Layer)的 MAC 子層中非常重要的一類機制。因此這篇所有的協議像是 Pure ALOHA、Slotted ALOHA、CSMA、CSMA/CD、CSMA/CA 全都是在 Data link layer 上運作的。 隨機存取的相對是循序存取,循序存取的最佳例子就是錄音帶,如果要在第一首歌切到第四首歌,必須要先切第二首、第三首,慢慢切才能切到第四首歌。而隨機存取相反,就可以隨便切,想切就切,所以才會有 RAM(Random-access memory)隨機存取記憶體。 為什麼需要 RAPs?在...
Switching(交換技術)
Switching(交換技術)Hello Guys, I’m LukeTseng. 本篇將來介紹什麼是路由器,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! 另外本篇文章主要針對上課內容製作筆記,斟酌參考~ 簡介(Introduction) 交換技術(Switching)是指兩個節點透過網路中繼站進行資料傳輸的方式,主要目的是將資料正確且快速地從發送端(Sender)傳送到接收端(Receiver)。在網路通訊中,由於存在數種甚至數千萬種可能的傳輸路徑,交換技術就是為了管理這些傳輸路徑而制定的方法。 其中呢,網路中繼站是指在資料從發送端傳送到接收端的路徑上,負責接收、處理並轉發資料的中間節點設備。這個網路中繼站也有可能是以下這些設備: 路由器(Router) 交換器(Switch) 中繼器(Repeater) 集線器(Hub) 以傳統上來說,Switching 會分成兩種方法: Circuit switching(電路交換) Packet switching(封包交換) Circuit switching Image Source:...
路由器是啥?路由器在幹嘛?一篇文章講清楚!
路由器是啥?路由器在幹嘛?一篇文章講清楚!Hello Guys, I’m LukeTseng. 本篇將來介紹什麼是路由器,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! 另外本篇文章主要針對上課內容製作筆記,斟酌參考~ 路由器(Router) 圖片來源:https://www.ithome.com.tw/review/96747 路由器的主要功能是連接不同的網路。 詳細一點,就是一個負責將資料封包(Packets)從一個網路傳送到另一個網路的設備。 來做個比喻: 網際網路(Internet):一顆地球,是一整個世界。 家中網路(LAN:Local-Area Networks 區域網路):一棟大樓。 數據機(Modem):大樓的大門,把外面的路(電話線 / 光纖)連進來。 路由器(Router):大樓裡的收發室管理員。 當外面(網際網路)寄來一封信(資料)時,信封上只寫了大樓的地址(公開 IP)。路由器的工作就是看這封信具體是要給 101 室的 XX(手機),還是 202 室的 YY(電腦),然後精準的把信送到對應的人手上。 如果沒有路由器...
一些常見的網路操作指令
一些常見的網路操作指令Hello Guys, I’m LukeTseng. 本篇將來介紹一些常見的網路操作指令,如 ping、nslookup 等等,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! 另外本篇文章主要針對上課內容製作筆記,斟酌參考~ 測試連線、發送封包:pingWindows:預設發送 4 個 ICMP 封包後自動停止。 Linux:預設會持續不斷地每秒發送一個封包,直到按下 Ctrl+C 終止。 封包數量控制Windows:用參數 -n 指定次數。 1ping -n 10 www.google.com Linux:用參數 -c 指定次數。 1ping -c 10 www.google.com 不斷的 pingWindows 需要再加上 -t 參數才能持續的 ping 別人: 1ping -t www.google.com Linux 預設就是了,所以不用。 封包大小差異Windows: 預設封包大小 32 bytes。 用 -I 參數指定大小:ping -I 800 www.google.com Linux: 預設封包大...
【C++】競程筆記:Stack 考題總整理
【C++】競程筆記:Stack 考題總整理Stack in STL: 先引入標頭檔 <stack>。 建立一個堆疊:stack <T> st;。T 為資料型態。 堆入堆疊:st.push(123);。根據當初宣告的資料型態丟入對應值。 存取堆疊頂端:st.top();。回傳堆疊頂端的值。 移除堆疊頂端的值:st.pop();。 檢查堆疊是否為空:st.empty();。 回傳堆疊大小:st.size()。 :::info需要特別注意的點:每次要做 pop() 的時候,都要檢查 stack 是否為空,否則會 segmentation fault。::: 1. 基礎操作輔助堆疊:155. Min StackProblem Source:https://leetcode.com/problems/min-stack/description/ 題目有個函式叫做 getMin(),除 top() 要回傳頂端值外, getMin() 也要回傳堆疊中的最小值。 解法:在現有堆疊 s 的基礎上再多加一個堆疊 ms,表示要存放最小值的堆疊。 在實作 push(int v...
簡單理解 TCP/IP 模型
簡單理解 TCP/IP 模型Hello Guys, I’m LukeTseng. 本篇將來介紹 TCP/IP 模型,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! 另外本篇文章主要針對上課內容製作筆記,斟酌參考~ 為什麼要有 TCP/IP 模型? Image Source:TCP/IP Model - GeeksforGeeks 上圖是 OSI 模型與 TCP/IP 模型的對應關係,先只看 TCP/IP 就好。 首先要理解為什麼要有 TCP/IP 模型? 可以試想如果全世界不同語言的人要溝通,是不是要亂成一團?每個人只要各講各的就好了,而電腦也是一樣。mac、Windows 電腦、手機等,硬體設備都不同,為了讓這些設備能彼此傳送資料,所以就需要一套通用的溝通規則。 這套規則的標準,就叫做 TCP/IP 模型。其中 TCP 跟 IP 的意思分別是以下這兩個: TCP:Transmission Control Protocol(負責確保資料送達) IP:Internet Protocol(負責地址與路徑) TCP/IP 是一個分層架構,從上圖...
【C++】競程筆記:二分搜考題總整理
【C++】競程筆記:二分搜考題總整理二分搜寫法模板 模板一(找精確值): while (left <= right),迴圈結束後 left > right。 模板二(找邊界/答案): while (left < right),通常配合 right = mid 或 left = mid + 1,結束時 left == right。 索引搜尋(Index Search)標準搜尋入門題(704. Binary Search)Problem Source:https://leetcode.com/problems/binary-search/ 123456789101112131415161718192021class Solution {public: int search(vector<int>& nums, int target) { int left = 0, right = nums.size() - 1; while (left <= right) {...
【Pytorch 深度學習筆記】用 Tensors 表示現實世界的資訊
【Pytorch 深度學習筆記】用 Tensors 表示現實世界的資訊哈囉大家好我是 LukeTseng,感謝您點進本篇筆記,該篇筆記主要配合讀本 《Deep Learning with pytorch》 進行學習,另外透過網路資料作為輔助。本系列筆記是我本人奠基深度學習基礎知識的開始,若文章有誤煩請各位指正,謝謝! 本篇為 《Deep Learning with pytorch》 這本書第四章 Real-world data representation using tensors 的相關筆記。 處理影像一張彩色照片是如何用數字表示的? 用張量表示。假設有張 800×600 像素的照片: 每個像素有 3 個顏色通道(Channel):RGB。 整張照片可以表示為形狀為 (3, 800, 600) 的張量。 第一個維度:3 個顏色 Channel。 第二、三個維度:圖片的寬和高。 由於書中範例是使用 imageio Module,但我比較習慣用 PIL,所以以下是 PIL 的範例: 有一張向日葵的圖片我拿來當範例(文章的圖片是壓縮過的,下載原檔執行程式才會是正確結果): ...
網路常見軟體、協定(FTP、TELNET 等)
網路常見軟體、協定(FTP、TELNET 等)Hello Guys, I’m LukeTseng. 本篇將來介紹 ip-address 跟 mac-address 的原理,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! 另外本篇文章主要針對上課內容製作筆記,斟酌參考~ FTP(File Transfer Protocol)FTP(File Transfer Protocol)直接翻譯就是檔案傳輸協定,專門用來在兩台電腦之間上傳和下載檔案。 假設你在學校寫好程式作業,想傳到家裡的電腦繼續改,就可以用 FTP。 FTP 使用明文傳輸,意思就是資料沒有加密。因此現代比較少單獨使用 FTP,反而搭配 SSH 使用 SFTP(Secure FTP)來加密傳輸。 而 FTP 採用主從式(Client-Server)架構,也就是客戶端對到一台伺服端。有一台主機作為 FTP 伺服器(用來儲存檔案),客戶端則用電腦(用戶端)連線並操作這台伺服器。 接下來 FTP 雙通道設計不像 HTTP 只用一個連線,FTP 同時開啟兩個 TCP 連線: 控制通道(port...
ip address、mac address 的原理
ip address、mac address 的原理Hello Guys, I’m LukeTseng. 本篇將來介紹 ip-address 跟 mac-address 的原理,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! IP 位址(Internet Protocol Address)IP 位址(Internet Protocol Address)是網路層的邏輯位址(Logical Address),用於網際網路上識別和定位設備。 這個 IP 位址基本上可以想像成是你家的地址,這樣想就好。 而邏輯位址是什麼呢?邏輯位址(Logical Address)在電腦網路和作業系統領域裡,泛指「軟體層級」所使用的、非直接對應硬體的位址。 Image Source:https://medium.com/@lagom247/%E7%B6%B2%E8%B7%AF%E6%9E%B6%E6%A7%8B-tcp-ip-%E5%9B%9B%E5%B1%A4%E6%9E%B6%E6%A7%8B-osi%E4%B8%83%E5%B1%A4%E6%9E%B6%E6%...




