iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
自我挑戰組

從競賽程式學習資料結構與演算法 系列

在這次的鐵人賽,我將綜合我從高中開始參與演算法競賽中學習到的演算法與資料結構,並搭配題目講解他們可以運用於哪些地方,除此之外,我也會從中穿插演算法競賽的參賽經驗與高中到大學的競賽差異,希望大家在這次的鐵人賽中,能夠一同體驗到演算法競賽的有趣之處,並且從中學習到演算法與資料結構知識,並進一步利用這些知識

DAY 1

Day-1 簡介

簡介 首次參與鐵人賽,我將在為期 30 天的比賽中,分享我多年來在參加比賽中所學到的資料結構和演算法知識。我將深入探討這些主題的概念,同時不定時比較高中和大學競...

2023-09-16 ‧ 由 YJK 分享
DAY 2

Day-2 複雜度分析

何謂複雜度 通常在解題或打競程時都會看到題目有時間與記憶體限制,而這基本上會跟你程式的時間/空間複雜度(Time/Space Complexity)有關。 ex...

2023-09-17 ‧ 由 YJK 分享
DAY 3

Day-3 資料結構概念

資料結構 在資訊工程學系中,資料結構是非常重要的一門課。在資訊科學中,資料結構是電腦中儲存、組織資料的方式,像是陣列(array)、佇列(queue)、堆疊(s...

2023-09-18 ‧ 由 YJK 分享
DAY 4

Day-4 佇列(Queue)

概念 如果有排隊吃拉麵的經驗,就會理解到一個隊伍一定是按照先來的人先進店吃的原則,這就是佇列(Queue)的基本概念,也稱為「先進先出」(First-In Fi...

2023-09-19 ‧ 由 YJK 分享
DAY 5

Day-5 堆疊(Stack)

概念 昨天,我們以排隊吃拉麵的情境為例,介紹了佇列(Queue)的基本概念。今天,我們將深入探討 stack 的實作方式,以及在 C++ 中如何使用陣列和 C+...

2023-09-20 ‧ 由 YJK 分享
DAY 6

Day-6 堆疊 & 佇列例題講解

前言 今天帶兩題題目,一題跟 stack 相關一題跟 queue 相關,為的是讓大家可以更了解怎麼應用這些資料結構,而不是只有瞭解概念 UVa 10935 Th...

2023-09-21 ‧ 由 YJK 分享
DAY 7

Day-7 鏈結串列(Linked List)

概念 Linked List 是一種線性資料結構,可以從中間直接插入元素,相對陣列來說會比較省時,不過在競賽程式其實我其實一次也沒有用過,原因我會在底下做說明。...

2023-09-22 ‧ 由 YJK 分享
DAY 8

Day-8 演算法概念

概念 首先,讓我們使用一個不太常見的比喻來解釋演算法的概念。我們將繼續以拉麵為例,製作一碗美味的拉麵需要經過多個步驟,例如製麵、熬湯、煮麵、製作叉燒和添加配料等...

2023-09-23 ‧ 由 YJK 分享
DAY 9

Day-9 排序 I

為何學排序? 排序為最基本也最容易上手也最泛用的演算法,解題方面有時候如果將資料排序過也會更容易解題或是大大降低時間複雜度,因此,如何更快的排序資料就成為了我們...

2023-09-24 ‧ 由 YJK 分享
DAY 10

Day-10 排序 II

前言 昨天介紹一些比較基本的排序演算法,今天介紹進階的排序演算法與 C++ 內更方便使用的函式 更快的排序 以下的排序法會利用一些遞迴或是其他技巧來避免掉許多不...

2023-09-25 ‧ 由 YJK 分享