[0]zero-index clytie0x/zero-index

เขียนโปรแกรมภาษา C ตั้งแต่ศูนย์

เอกสารชุดนี้พาน้องเริ่มจากยังไม่เคยเขียนโปรแกรมเลย ไปจนพร้อมทำโจทย์ระดับ TOI Zero

เริ่มบทที่ 0 ดูเส้นทางเรียน

เส้นทางเรียน

เรียนภาษา C ให้แน่นก่อน ทุกบทใช้ C อย่างเดียว พอเข้าใจ C ครบแล้วค่อยต่อ C++ จะเห็นว่า C++ ต่อยอดจากสิ่งที่รู้อยู่แล้ว บทที่ยังเป็นสีจางคือบทที่กำลังเขียน

ภาษา C ระดับ TOI Zero ถึงค่าย 1

  1. [0]เริ่มต้นติดตั้งเครื่องมือ และเขียนโปรแกรมแรกให้รันได้4 หน้า
  2. [1]ตัวแปรและการคำนวณint long long double char ตัวดำเนินการ และตัวเลขที่ใหญ่เกินจะเก็บได้5 หน้า
  3. [2]รับและแสดงผลscanf printf จัดทศนิยม อ่านโจทย์ และรับข้อมูลแบบ grader5 หน้า
  4. [3]เงื่อนไขif else switch การเปรียบเทียบ และตรรกะ5 หน้า
  5. [4]วนซ้ำfor while ลูปซ้อน นับ สะสม และวาดรูปด้วยดาว6 หน้า
  6. [5]อาเรย์เก็บข้อมูลหลายตัว หาค่ามากสุด นับความถี่ ผลรวมสะสม6 หน้า
  7. [6]ตัวอักษรและสตริงchar รหัส ASCII ข้อความ นับตัวอักษร กลับคำ6 หน้า
  8. [7]อาเรย์สองมิติตาราง เมทริกซ์ และการเดินในกริด6 หน้า
  9. [8]ฟังก์ชันแบ่งโค้ดเป็นส่วน ส่งค่า คืนค่า และขอบเขตตัวแปร6 หน้า
  10. [9]recursionฟังก์ชันที่เรียกตัวเอง และคิดปัญหาแบบแบ่งเป็นปัญหาเล็ก6 หน้า
  11. [10]pointerที่อยู่ในหน่วยความจำ ส่งตัวแปรให้ฟังก์ชันแก้ pointer กับอาเรย์ และ malloc6 หน้า
  12. [11]structรวมข้อมูลหลายชนิดเป็นก้อนเดียว และอาเรย์ของ struct5 หน้า
  13. [12]คณิตศาสตร์ในการเขียนโปรแกรมmod ห.ร.ม. จำนวนเฉพาะ เลขฐาน ลำดับ และการนับ6 หน้า
  14. [13]เรียงข้อมูลและค้นหาbubble selection insertion sort ค้นหาแบบไล่ และค้นหาข้อความ6 หน้า
  15. [14]linked list stack queueโครงสร้างข้อมูลพื้นฐานที่เขียนเองด้วยภาษา C6 หน้า

ภาษา C++ และ STL ปลายค่าย 1

  1. [15]จาก C สู่ C++cin cout string bool reference และอ่านเขียนให้เร็ว6 หน้า
  2. [16]vector pair และ sortอาเรย์ที่ยืดได้ คู่ข้อมูล และเรียงข้อมูลในบรรทัดเดียว6 หน้า
  3. [17]stack queue deque ใน STLใช้โครงสร้างข้อมูลสำเร็จรูป แทนที่เขียนเองในบทที่ 145 หน้า

อัลกอริทึม ระดับค่าย 2 และ TOI

  1. [18]ความซับซ้อนของเวลาBig O ประมาณเวลารันจากขอบเขตโจทย์ ก่อนเริ่มเขียน6 หน้า
  2. [19]binary search และ prefix sumค้นในข้อมูลที่เรียงแล้ว และหาผลรวมช่วงในเวลาคงที่6 หน้า
  3. [20]set map และ priority queueเก็บข้อมูลไม่ซ้ำ จับคู่คีย์กับค่า และดึงค่ามากสุดเร็วๆ6 หน้า
  4. [21]brute force และ backtrackingลองทุกทางอย่างเป็นระบบ และตัดทางที่ไม่มีหวังทิ้ง6 หน้า
  5. [22]divide and conquerแบ่งปัญหาครึ่งๆ merge sort quick sort6 หน้า
  6. [23]greedyเลือกสิ่งที่ดีที่สุดตอนนี้ และพิสูจน์ว่าทำไมถึงถูก6 หน้า
  7. [24]dynamic programming เบื้องต้นจำคำตอบของปัญหาย่อย ไม่คำนวณซ้ำ6 หน้า
  8. [25]dynamic programming แบบคลาสสิกknapsack LIS LCS และ DP บนตาราง6 หน้า
  9. [26]tree BST และ heapโครงสร้างแบบต้นไม้ การท่องต้นไม้ และ heap6 หน้า
  10. [27]กราฟ DFS และ BFSแทนกราฟในโปรแกรม เดินกราฟ ส่วนเชื่อมต่อ และ BFS บนตาราง6 หน้า
  11. [28]เส้นทางสั้นสุดDijkstra Bellman-Ford และ Floyd-Warshall6 หน้า
  12. [29]MST และ union-findต้นไม้แผ่ทั่วที่มีน้ำหนักน้อยสุด Kruskal Prim6 หน้า
  13. [30]หัวข้อเสริมtopological sort Fenwick tree segment tree และค้นหาข้อความ5 หน้า

ก่อนเริ่ม

  • ใช้โน้ตบุ๊ก Windows ของตัวเอง
  • ไม่ต้องมีพื้นฐานเขียนโปรแกรมมาก่อน
  • เริ่มที่ บทที่ 0 แล้วไล่ไปทีละหน้า อย่าข้าม

วิธีอ่านให้ได้ผล

พิมพ์โค้ดทุกตัวอย่างเองแล้วรันดู อย่าก๊อปวาง การพิมพ์เองทำให้เจอ error จริง และการแก้ error คือการเรียนที่ได้ผลที่สุด