【C++ 筆記】多型(Polymorphism) - part 23
【C++ 筆記】多型(Polymorphism) - part 23很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! OOP 四大特性再次強調 OOP(物件導向程式設計)的四大特性: 封裝(Encapsulation)(已學) 繼承(Inheritance)(已學) 多型(Polymorphism) 抽象(Abstraction) 多型(Polymorphism)多型也稱為多態。 多型簡單來說,就是「同一個動作,因物件不同而產生不同結果」。想像我們現在有一個遙控器(介面),上面有一個「開啟」按鈕。當按下這個按鈕去控制不同設備時,會發生不同的事: 對電視按「開啟」,電視會顯示畫面。 對電風扇按「開啟」,風扇會開始轉動。 對電燈按「開啟」,燈會亮起來。 同一個「開啟」指令(介面),因為控制的物件(電視、風扇、電燈)不同,產生不同的行為,這就是多型。 在程式設計中,多型可讓我們用統一的方式(像是...
【C++】競程筆記(資料結構:linked-list)
【C++】競程筆記(資料結構:linked-list)程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 鏈結串列(linked-list)一般的陣列會是在連續的記憶體空間中儲存資料,而鏈結串列雖與陣列同為線性資料結構,但他可以將資料儲存在一個 不連續(non-contiguous) 的記憶體空間中。 linked-list 的定義為數個節點(nodes)的集合,而一個節點就由兩個成員所組成,也就是值跟前後的指標(value and previous / next pointer)。 linked-list 可以有三種型態: 單向鏈結串列(Singly Linked List) 雙向鏈結串列(Doubly Linked List) 循環鏈結串列(Circular Linked List) 那首先最簡單的當然就是單向的 linked-list 了,要如何簡單的理解 linked-list 呢?就如同上課傳紙條一樣,假設有一排座位,某個同學要傳紙條到最前面的同學,勢必要點他前面同學的肩膀叫他接力下去,就有點像下圖那樣: 圖:作者繪製 Head 就是這個鏈結串列的...
【C++】競程筆記(資料結構:Stack、Queue)
【C++】競程筆記(資料結構:Stack、Queue)程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 資料結構這啥?就是: 在電腦科學中,資料結構(data structure)是電腦中儲存、組織資料的方式。From:Wikipedia 資料結構有兩種操作: 修改操作 查詢操作 修改就是可以在一個資料結構,像是陣列裡面新增或移除值。 查詢就是可以存取一個資料結構的元素,如 a[0]。 常見的資料結構有 stack(堆疊)、queue(佇列)、array(陣列)、vector(C++ STL 的動態陣列)、linked-list(鏈結串列)等等。 vector 的部分可以參照我先前寫的:https://hackmd.io/@LukeTseng/H1ZqX9RHkl 迭代器(iterator) 迭代器就是一個能枚舉資料結構的資料的物件。 然後迭代器跟指標很像,但實際上不太一樣,他是一種設計模式,用來逐個存取容器(如 array、set等)內的元素,而不需要顯示容器的內部結構。 用一句話概括就是:迭代器是一種提供通用介面來遍歷容器中元素的物件。 以下程式...
【Win 11/10】電腦會卡?會Lag?推薦兩款軟體給你!
【Win 11/10】電腦會卡?會Lag?推薦兩款免費軟體給你!各位好,我是 LukeTseng,今天為各位推薦兩款免費軟體,可自動幫你清理暫存檔,並且進一步為你的電腦進行優化!廢話不多說,馬上來介紹第一款軟體。 Wise Disk Cleaner 官方網站:https://www.wisecleaner.com/wise-disk-cleaner.html 免安裝包下載(非官方):https://www.azofreeware.com/p/wise-disk-cleaner.html 這款軟體真的非常好用,不用自己手動 win + R 開啟 Temp 資料夾,然後把暫存全刪掉。 軟體下載完後呈現以下的介面,我個人建議使用預設值就好,其他是否要勾選就看個人。 至於有些人下載完後可能會顯示英文介面,以下就教你如何更改為中文: 至於下面的 Appearance 就是外觀的意思,可以更改為 Light(淺色)、Dark(深色主題)。 另外這軟體還有其他功能,像是進階清理、系統瘦身、硬碟整理等,我覺得都蠻不錯用的,推薦給各位。 還有說一下,系統瘦身的部分: 建議選擇前面兩項就好,...
【個人筆記】C++ ZeroJudge 基礎題庫解題(純練習) - part 4
【個人筆記】C++ ZeroJudge 基礎題庫解題(純練習) - part 4a022.:https://zerojudge.tw/ShowProblem?problemid=a022 難度:★☆☆☆☆ 1234567891011121314151617181920#include <bits/stdc++.h>using namespace std;int main(){ bool re = true; int count; string input; cin >> input; count = input.size(); char result[count]; strcpy(result, input.c_str()); for (int i = 0; i < floor(count / 2); i++){ if (result[i] != result[count-1-i]){ re = false; } ...
【HTML 筆記】超連結(Hyperlinks)【part 5】
【HTML 筆記】超連結(Hyperlinks)【part 5】Hello Guys,我是 LukeTseng,自從大學放榜後,我就積極不間斷的學習資訊相關的東西,持續地茁壯自己,主要最大的成分還是興趣與熱愛這個學科來支撐的~總之,廢話不多說,本文主要透過網路上的各大免費平台自學,並且整理成一篇筆記以供自己閱讀的同時,也能促進個人的學習軌跡。 HTML 超連結(連結)HTML 用 <a> 設定超文本連結。 基本語法如下: <a href="URL">link</a> <a> 標籤:定義一個超連結(anchor)。是 HTML 中用來建立可點擊連結的主要標籤。 href 屬性:指定目標 URL,當點擊連結時,瀏覽器會導覽至此 URL。 一個超連結有以下預設的形式: 一個從來都未存取過的連結顯示為「藍色」字體並有底線,如下圖。 存取過的連結顯示為「紫色」並有底線,如下圖。 當點擊連結時,連結顯示為「紅色」並有底線。(就是閃一下紅色的,然後又變回去藍色) :::info若將這些超連結設定 css 後...
【HTML 筆記】文本格式化標籤、特殊字元【part 4】
【HTML 筆記】文本格式化標籤、特殊字元【part 4】Hello Guys,我是 LukeTseng,自從大學放榜後,我就積極不間斷的學習資訊相關的東西,持續地茁壯自己,主要最大的成分還是興趣與熱愛這個學科來支撐的~總之,廢話不多說,本文主要透過網路上的各大免費平台自學,並且整理成一篇筆記以供自己閱讀的同時,也能促進個人的學習軌跡。 標題(Heading)這邊主要稍微講一下標籤對 SEO 優化的影響,建議是大標題就使用 h1 字體,次要則使用 h2,最後才是 h3。總之就是要掌握跟檢查這個結構,可以讓搜尋引擎更容易抓取索引,去找到文章。 若是一個符合 SEO 規範的文章,h1 標籤只能有一個,h2 可以有無數多個,h3 是為了讓文章結構更加明確才加的,最多可以到 h6。 然後補充以下兩個前面章節未講到的標籤: 標籤 說明 <hr> 定義一個水平線 <!--...--> 定義一行註解 範例: 1<h1>HTML 水平線~</h1> <hr> 加上註解以後: 12<!-- 這是 HTM...
【HTML 筆記】事件屬性【part 3】
【HTML 筆記】事件屬性【part 3】Hello Guys,我是 LukeTseng,自從大學放榜後,我就積極不間斷的學習資訊相關的東西,持續地茁壯自己,主要最大的成分還是興趣與熱愛這個學科來支撐的~總之,廢話不多說,本文主要透過網路上的各大免費平台自學,並且整理成一篇筆記以供自己閱讀的同時,也能促進個人的學習軌跡。 事件屬性這種屬性通常會觸發 javascript 腳本,然後做出一系列的事件。 常用屬性表 屬性 元素 說明 onafterprint body 網頁內容要被列印之後。 onbeforeprint body 網頁內容要被列印之前。 onbeforeunload body 網頁內容尚未載入之前。 onerror audio、body、embed、img、object、script、style、video 元素內容錯誤發生時。 onhashchange body 網頁網址的 hash tag 改變時。 onload body、iframe、img、input、link、script、style 元素內容載入時。 onofflin...
【HTML 筆記】元素、屬性【part 2】
【HTML 筆記】元素、屬性【part 2】Hello Guys,我是 LukeTseng,自從大學放榜後,我就積極不間斷的學習資訊相關的東西,持續地茁壯自己,主要最大的成分還是興趣與熱愛這個學科來支撐的~總之,廢話不多說,本文主要透過網路上的各大免費平台自學,並且整理成一篇筆記以供自己閱讀的同時,也能促進個人的學習軌跡。 HTML 元素(Elements)HTML 是透過一系列的元素來結構化網頁內容的語言。 每個元素由標籤(tags)所定義,也可能包含了屬性(attributes)來提供額外的功能或訊息。 一個 HTML 元素通常由以下部分所組成: 開始標籤(Opening Tag):以 <標籤名> 的形式表示,如 <p>。 內容(Content):標籤之間的文字、圖片或其他元素,如「<p>這是一段文字</p>」。 結束標籤(Closing Tag):以 </標籤名> 的形式表示,如 </p>。 <p>這是一段文字</p> 表示一個段落元素。 屬性(Attributes):提...
【HTML 筆記】從零開始的 HTML【part 1】
【HTML 筆記】從零開始的 HTML【part 1】Hello Guys,我是 LukeTseng,自從大學放榜後,我就積極不間斷的學習資訊相關的東西,持續地茁壯自己,主要最大的成分還是興趣與熱愛這個學科來支撐的~總之,廢話不多說,本文主要透過網路上的各大免費平台自學,並且整理成一篇筆記以供自己閱讀的同時,也能促進個人的學習軌跡。 HTML 介紹HTML 是什麼? HTML 的英文全名為 HyperText Markup Language,翻譯成中文就是「超文本標記語言」,簡稱 HTML。 HTML 是用來建構網頁內容與結構的標準語言。需要注意的是:它不是一種程式語言,而是一種標記語言(Markup Language),用來描述網頁上的文字、圖像、連結、表格、表單等內容的結構與意義。 根據 W3Schools、菜鳥教程 列出下列幾點: HTML 代表超文本標記語言 HTML 是建立網頁的標準標記語言 標記語言是一套標記標籤 (markup tag) HTML 描述網頁的結構 HTML 由一系列元素組成 HTML 元素告訴瀏覽器如何顯示內容 HTML 元素標記內容片段,例如「這...
【C++】競程筆記(貪心法則、貪婪演算法)
【C++】競程筆記(貪心法則、貪婪演算法)程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 註:本篇筆記是作者本人腦子最燒的一篇。 貪婪演算法(greedy algorithm)又稱貪心法則,最常見的例子就是排程問題。 貪婪演算法在每一步決策中選擇當前看似最好的選項,其核心在於追求「局部最優解」,而非保證「全局最優解」。 縮短一下句子,貪婪演算法就是每一步選目前最好的就對了。 若一道題目要得到全局最優解,則應該要考慮使用動態規劃(Dynamic Programming)演算法。 對,貪心法就這樣,剩下就是靠做題目去抓感覺,但是貪心法就跟動態規劃一樣鬼,題目可以給你出得很簡單很甜,有時候可以給你難到嚇嚇叫,做個題目想個一天還不一定想得出來(被這些題目蹂躪過的作者表示)。 [Tutorial] 好吃的蛋糕 Source:https://oj.ntucpc.org/problems/97 12345678910111213141516171819202122232425262728#include <iostream>#include <vecto...
【C++ 筆記】繼承(Inheritance) - part 22
【C++ 筆記】繼承(Inheritance) - part 22很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! OOP 四大特性首先讓我們複習一下 OOP(物件導向程式設計) 四大特性: 封裝(Encapsulation) 繼承(Inheritance) 多型(Polymorphism) 抽象(Abstraction) 封裝在前面我們已經有學過了,其實就是使用存取修飾子 private 或 protected 來限制資料成員的權限,不被其他程式碼控制。 封裝就跟他的名字一樣,一個被封裝的紙箱,箱子外的人看不見裡面的東西是啥,只有透過打開這個行為(方法)才能進一步看到箱子裡的東西,而這個行為就是限制了外人存取資料成員的權限。 :::success封裝具體定義:將資料和運算這些資料的方法組合在一個類別(Class)中,並透過存取控制來限制對資料的直接存取。::: 封裝主要有以下四種用途跟目的:...
【C++】競程筆記(數學&程式設計)
【C++】競程筆記(數學&程式設計)程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 質數(prime numbers)與因數(factor)因數定義:「 $y$ 是 $x$ 的因數代表 $x$ 除以 $y$ 為整數」。 在程式設計上則以 x % y == 0 表示。 123456// from NTUCPC Guidefor (int y = 1; y <= x; y++) { if (x % y == 0) { // y 是 x 的因數 }} 這樣 for 迴圈的遍歷方式,時間複雜度為 $O(x)$ ,因為有 x 個元素要判斷。 而在我們正常尋找因數的方法,如下: $12 = 1 \times 12 = 2 \times 6 = 3 \times 4 = 4 \times 3 = 6 \times 2 = 12 \times 1$ 可以發現,當因數 $>3$ 時,後面的因數與前面完全一致,我們到 $3$ 的時候就不會繼續找因數了。 為了要優化上面的代碼,所以可以透過這一...
【C++】競程筆記(搜尋演算法、習題練習)
【C++】競程筆記(搜尋演算法、習題練習)程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 線性搜尋法(linear search)時間複雜度為 $O(N)$ ,就是用 for 迴圈遍歷得出的結果,如下: 1234567891011121314151617#include <iostream>#include <vector>using namespace std;int main(){ vector <int> a = {2,1,7,2,4,3,0,11,3,4,5,5,6,7,100,92,41,27,14}; for (int i=0;i<a.size();i++){ if (a[i] == 100){ cout << i; break; } } return 0;} 以上程式碼透過遍歷尋找 100 這個元素的位...
【C++】競程筆記(枚舉習題練習)
【C++】競程筆記(枚舉習題練習) https://zerojudge.tw/ShowProblem?problemid=c435 123456789101112131415161718192021222324#include <bits/stdc++.h>using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } int max_left = a[0]; int ans = INT_MIN; // INT_MIN 是 int 資料型態的最小值 -2^31 for (int j = 1; j < n; j++) { ans = max...





