Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม
การเขียนโปรแกรม
  1. Print Matrix in Spiral Way (พิมพ์เมทริกซ์แบบเกลียว): อัลกอริทึมและโค้ดตัวอย่าง

    อัลกอริทึมนี้ใช้พิมพ์สมาชิกของอาร์เรย์ในรูปแบบเกลียว (Spiral) เริ่มจากแถวแรก พิมพ์ทั้งแถว แล้วตามคอลัมน์สุดท้าย แล้วแถวสุดท้าย และทำซ้ำจนครบ Time Complexity คือ O(M×N) โดย M = จำนวนแถว, N = จำนวนคอลัมน์ Input และ Output Input: เมทริกซ์: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Output: 1

  2. Algorithms and Complexities (อัลกอริทึมและความซับซ้อน): พื้นฐานและเกณฑ์

    Algorithm (อัลกอริทึม) คืออะไร? Algorithm คือชุดคำสั่งที่มีจำนวนจำกัด ซึ่งหากปฏิบัติตามจะทำภารกิจเฉพาะเจาะจงสำเร็จ ไม่ผ속กับภาษาโปรแกรม ใช้ภาษาและสัญลักษณ์ใดก็ได้ เกณฑ์ของอัลกอริทึม Input (อินพุต): มีอินพุต 0 หรือมากกว่า ที่จัดหาจากภายนอก Output (เอาต์พุต): ให้ผลลัพธ์อย่างน้อย 1 อย่าง Definiteness

  3. Asymptotic Analysis (การวิเคราะห์渐近): ทฤษฎีและกรณีการวิเคราะห์

    Asymptotic Analysis คืออะไร? การวิเคราะห์渐近 (Asymptotic Analysis) ช่วยให้เราเข้าใจประสิทธิภาพของอัลกอริทึมจากขนาดอินพุต (Input Size) เราไม่คำนวณเวลาทำงานที่แน่นอน แต่หาความสัมพันธ์ระหว่างเวลาทำงานกับขนาดอินพุต และติดตามว่าเวลาทำงานเปลี่ยนแปลงอย่างไรเมื่อขนาดอินพุตเพิ่มขึ้น สำหรับ Space Complexity เป

  4. Asymptotic Notations (สัญกรณ์渐近): Big-O, Big-Omega, Big-Theta

    Asymptotic Notations คืออะไร? Asymptotic Notations (สัญกรณ์渐近) ใช้แทนความซับซ้อนของอัลกอริทึมสำหรับการวิเคราะห์渐近 (Asymptotic Analysis) เป็นเครื่องมือทางคณิตศาสตร์สำหรับแทนความซับซ้อน มี 3 สัญกรณ์หลักที่ใช้กันทั่วไป Big-Oh Notation (O) - ขอบเขตบน Big-Oh (O) ให้ขอบเขตบน (Upper Bound) ของฟังก์ชัน f(n

  5. Amortized Analysis (การวิเคราะห์แบบ Amortized): ทฤษฎีและตัวอย่าง

    Amortized Analysis คืออะไร? Amortized Analysis (การวิเคราะห์แบบ Amortized) ใช้เมื่อมีการดำเนินการบางครั้งที่ช้ามาก แต่การดำเนินการส่วนใหญ่ที่ทำบ่อยๆ นั้นรวดเร็ว โครงสร้างข้อมูลที่ต้องการการวิเคราะห์แบบนี้ ได้แก่ Hash Tables, Disjoint Sets เป็นต้น ใน Hash Table การค้นหาส่วนใหญ่ใช้เวลา O(1) แต่บางครั้

  6. Space Complexity (ความซับซ้อนของพื้นที่) คืออะไร?

    Space Complexity คืออะไร? Space Complexity (ความซับซ้อนของพื้นที่) หมายถึงปริมาณหน่วยความจำที่อัลกอริทึมใช้ (รวมถึงค่าอินพุตของอัลกอริทึม) เพื่อทำงานจนเสร็จและสร้างผลลัพธ์ออกมา เราทราบว่าเพื่อให้อัลกอริทึมทำงาน ต้องโหลดลงในหน่วยความจำหลัก (Main Memory) หน่วยความจำสามารถใช้ในรูปแบบต่างๆ ได้ดังนี้: V

  7. Polynomial Time Approximation Scheme (PTAS): อัลกอริทึมประมาณค่าสำหรับปัญหา NP-Complete

    Polynomial Time Approximation Scheme (PTAS) คืออะไร? เราสามารถหาคำตอบในเวลา Polynomial สำหรับปัญหา NP-Complete บางประเภท เช่น ปัญหา 0-1 Knapsack หรือ Subset Sum ซึ่งเป็นปัญหาที่พบบ่อยในโลกความเป็นจริง จึงมีวิธีการจัดการหลายอย่าง Polynomial Time Approximation Scheme (PTAS) เป็นประเภทหนึ่งของอัลกอริทึ

  8. Hash Functions และ Hash Tables (ฟังก์ชันแฮชและตารางแฮช)

    บทนำ Hashing (การแฮช) คือกระบวนการสร้างค่าจากข้อความหรือรายการตัวเลขโดยใช้ฟังก์ชันทางคณิตศาสตร์ที่เรียกว่า Hash Function มี Hash Functions หลายตัวที่ใช้คีย์ (Keys) แบบตัวเลขหรือตัวอักษรผสมตัวเลข (Alphanumeric) Hash Functions ที่แตกต่างกันมีดังนี้: Hash Functions (ฟังก์ชันแฮช) ต่อไปนี้คือ Hash Funct

  9. การหมุนสตริงแบบ Lexicographically Minimum (Minimum String Rotation)

    บทนำ พิจารณาสตริงที่กำหนด เรารู้ว่าสตริงคือลำดับของตัวอักษร การหมุนแบบ Lexicographical (Lexicographical Rotation) คือการหมุนสตริง เพื่อให้ตัวอักษรเรียงตามลำดับ Lexicographical วิธีแก้ง่ายๆ: เราเพียงแค่ต่อสตริงที่กำหนดกับตัวมันเอง (Concatenate) แล้วในอาเรย์อีกอันหนึ่ง เก็บการหมุนของสตริงทั้งหมด หลังจ

  10. ปัญหา Nut และ Bolt (Nuts and Bolts Problem)

    บทนำ กำหนดรายการ Nut (นัท) ที่แตกต่างกัน และรายการ Bolt (บอท) อีกชุดหนึ่ง ภารกิจคือหาคู่ที่ตรงกันของ Nut และ Bolt จากรายการที่กำหนด และจับคู่ Nut นั้นกับ Bolt เมื่อตรงกัน ปัญหานี้แก้ด้วยเทคนิค Quick Sort โดยนำอิลิเมนต์สุดท้ายของ Bolt เป็น Pivot เรียงใหม่รายการ Nut และได้ตำแหน่งสุดท้ายของ Nut ที่ Bol

  11. ปัญหาล็อกและกุญแจ (Lock & Key Problem) ด้วย Hash Map

    บทนำ กำหนดรายการล็อก (Locks) ที่แตกต่างกัน และรายการกุญแจ (Keys) อีกชุดหนึ่ง ภารกิจคือหาคู่ที่ตรงกันของล็อกและกุญแจจากรายการที่กำหนด และกำหนดกุญแจนั้นกับล็อกเมื่อตรงกัน ในแนวทางนี้ เราจะเดินทาง (Traverse) ผ่านล็อกทั้งหมดและสร้าง Hash Map หลังจากนั้น แต่ละกุญแจจะถูกค้นหาใน Hash Map เมื่อกุญแจตรงกัน แ

  12. พิมพ์ Permutation ทั้งหมดของสตริง (Print All Permutations of String)

    บทนำ การพิมพ์ Permutation (การเรียงสับเปลี่ยน) ทั้งหมดของสตริงที่กำหนดเป็นตัวอย่างของปัญหา Backtracking เราจะลดขนาดของ Substring เพื่อแก้ Sub-problems แล้ว Backtrack กลับมาเพื่อหา Permutation อื่นจากส่วนนั้น ตัวอย่าง: ถ้าสตริงคือ ABC, Permutation ทั้งหมดคือ ABC, ACB, BAC, BCA, CAB, CBA Complexity ขอ

  13. การตรวจสอบ Parity (คู่/คี่) ของตัวเลข

    บทนำ Parity (ความคู่คี่) ของตัวเลขขึ้นอยู่กับจำนวน 1 ที่ปรากฏในค่า Binary เทียบเท่าของตัวเลขนั้น เมื่อจำนวน 1 เป็นคี่ จะคืนค่า Odd Parity สำหรับจำนวน 1 เป็นคู่ จะคืนค่า Even Parity เนื่องจากตัวเลขในหน่วยความจำคอมพิวเตอร์เก็บในรูป Binary เราจึงสามารถเลื่อนบิต (Shift Bits) ได้ง่าย ในกรณีนี้ ด้วยการเลื

  14. การสุ่มตัวอย่างแบบ Reservoir Sampling

    บทนำ Reservoir Sampling เป็นอัลกอริทึมแบบสุ่ม (Randomized Algorithm) ในอัลกอริทึมนี้ เลือก k ไอเทมจากลิสต์ที่มี n ไอเทมที่แตกต่างกัน เราสามารถแก้ได้โดยสร้างอาเรย์เป็น Reservoir ขนาด k แล้วสุ่มเลือกหนึ่งอิลิเมนต์จากลิสต์หลักและวางใน Reservoir List เมื่อไอเทมถูกเลือกครั้งหนึ่ง จะไม่ถูกเลือกอีกในครั้งต

  15. ปัญหาพ่อค้าเดินทาง (Travelling Salesman Problem - TSP)

    บทนำ พ่อค้าคนหนึ่งอยู่ในเมืองหนึ่ง เขาต้องไปเยี่ยมชมเมืองอื่นๆ ทั้งหมดที่ระบุในรายการ ต้นทุนการเดินทางจากเมืองหนึ่งไปอีกเมืองหนึ่งก็ได้รับการให้มา หาเส้นทางที่ต้นทุนต่ำที่สุดเพื่อเยี่ยมชมเมืองทั้งหมดครั้งเดียวและกลับมาที่เมืองเริ่มต้น กราฟต้องเป็น Complete Graph สำหรับกรณีนี้ เพื่อให้พ่อค้าสามารถไปจ

  16. หาวันในสัปดาห์ด้วยอัลกอริทึม Zeller (Zeller's Algorithm)

    บทนำ อัลกอริทึมของ Zeller ใช้หาวันในสัปดาห์ (Weekday) จากวันที่กำหนด สูตรสำหรับหาวันด้วย Zellers Algorithm มีดังนี้: สูตรนี้มีตัวแปรต่างๆ ดังนี้: d - วันของวันที่ m: รหัสเดือน (Month Code) จาก มีนาคมถึงธันวาคม คือ 3 ถึง 12, มกราคมคือ 13, กุมภาพันธ์คือ 14 เมื่อพิจารณาเดือนมกราคมหรือ กุมภาพั

  17. การเรียงสตริงแบบ Alphanumeric (Dictionary Order)

    บทนำ รายการสตริงที่กำหนดจะถูกเรียงลำดับตามลำดับ Alphanumeric หรือ Dictionary Order ตัวอย่างคำเหล่านี้: Apple, Book, Aim จะถูกเรียงเป็น Aim, Apple, Book หากมีตัวเลข สามารถวางไว้หน้าสตริงตัวอักษรได้ อินพุตและเอาต์พุต Input: รายการสตริง: Ball Apple Data Area 517 April Man 506 Output: สตริงหลังเรียง: 5

  18. ปัญหาหอคอยฮานอย (Tower of Hanoi Problem)

    บทนำ Tower of Hanoi เป็นปริศนา (Puzzle) ที่มี 3 ไม้กางเขน (Stands) และ n แผ่นกลม (Discs) เริ่มต้น แผ่นกลมวางอยู่ที่ไม้กางเขนแรก ต้องย้ายแผ่นกลมไปไม้กางเขนที่สามหรือปลายทาง ไม้กางเขนที่สองหรือช่วย (Auxiliary) ใช้เป็นไม้ช่วย แตมีกฎที่ต้องปฏิบัติ: ย้ายได้เพียงแผ่นเดียวต่อการเคลื่อนที่หนึ่งครั้ง

  19. เชื่อมเชือก n เส้นด้วยต้นทุนต่ำสุด (Connect N Ropes with Minimum Cost)

    บทนำ มีเชือก N เส้น ที่มีความยาวกำหนด ต้องการเชื่อมต่อพวกมัน ต้นทุนในการเชื่อมเชือกหนึ่งเส้นกับอีกเส้นหนึ่ง คือผลรวมของความยาวของพวกมัน เป้าหมายคือเชื่อมเชือก N เส้นด้วยต้นทุนต่ำสุด ปัญหานี้แก้ได้ด้วย Heap Tree (กอง) เราจะสร้าง Min Heap เพื่อใส่ความยาวต่างๆ ทั้งหมด แล้วนำ Minimum และ Second Minimum

  20. การแปลงตัวเลขเป็นเลขโรมัน (Number to Roman Numerals)

    บทนำ เลขโรมัน (Roman Numerals) เป็นเลขที่ไม่มีค่าตำแหน่ง (Non-positional) ใช้สัญลักษณ์บางตัวรวมกันเพื่อสร้างตัวเลขในระบบโรมัน ตัวอย่างเช่น ตัวเลข 75 สามารถแสดงได้เป็น 75 = 50 + 10 + 10 + 5 ดังนั้นเลขโรมันคือ LXXV ในปัญหานี้ กำหนดตัวเลขหนึ่งตัวในรูปทศนิยม (Decimal) ภารกิจคือแปลงเป็นสตริงเลขโรมัน มีสั

Total 1490 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:64/75  20-คอมพิวเตอร์/Page Goto:1 58 59 60 61 62 63 64 65 66 67 68 69 70