Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. แปลง Binary Tree เป็น Threaded Binary Tree โดยใช้ Queue ใน C++

    ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมแปลง Binary Tree ให้กลายเป็น Threaded Binary Tree โดยใช้โครงสร้างข้อมูล Queue เราจะได้รับ Binary Tree มา 1 ต้น งานคือแปลงต้นไม้นั้นให้กลายเป็น Threaded Binary Tree โดยเพิ่มเส้นทางเพิ่มเติมสำหรับการท่อง Inorder ให้เร็วขึ้น ด้วยความช่วยเหลือจาก Queue ตัวอย่างโค้ด #inc

  2. แปลง BST เป็น Binary Tree โดยบวกผลรวมคีย์ที่มากกว่าเข้าไปในทุกคีย์ใน C++

    ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมแปลง Binary Search Tree (BST) ให้กลายเป็น Binary Tree โดยที่ผลรวมของคีย์ที่มากกว่าทั้งหมดจะถูกบวกเข้าไปในคีย์ปัจจุบัน เราจะได้รับ BST มา 1 ต้น งานของเราคือแปลงต้นไม้นั้นให้กลายเป็น Binary Tree โดยที่แต่ละโหนดจะมีค่าเท่ากับค่าเดิมบวกกับผลรวมของคีย์ที่มากกว่ามันทั้งหม

  3. ฟังก์ชันการค้นหาแบบทวิภาคใน C++ STL (binary_search, lower_bound, upper_bound)

    การค้นหาแบบทวิภาค (Binary Search) เป็นอัลกอริทึมที่ค้นหาองค์ประกอบโดยเปรียบเทียบกับค่ากลางของอาร์เรย์และแบ่งออกตามค่านั้น ทำซ้ำจนกว่าจะพบองค์ประกอบ อาร์เรย์ต้องถูกจัดเรียงล่วงหน้าก่อนใช้งาน ความซับซ้อนด้านเวลาคือ O(log n) ทำให้เป็นสิ่งสำคัญที่โปรแกรมเมอร์ควรรู้จักฟังก์ชันสำเร็จรูปใน STL เพื่อลดเวลา

  4. การค้นหาแบบทวิภาคใน C++ Standard Template Library (STL)

    การค้นหาแบบทวิภาค (Binary Search) หรือที่รู้จักกันในชื่อ Logarithmic Search เป็นอัลกอริทึมค้นหาที่ใช้สำหรับค้นหาองค์ประกอบในอาร์เรย์ที่จัดเรียงแล้ว อัลกอริทึมนี้จะแบ่งอาร์เรย์ออกเป็นสองครึ่งอย่างต่อเนื่อง หากพบองค์ประกอบที่ตำแหน่งกลางจะคืนค่า มิฉะนั้นจะเรียกใช้งานแบ่งและตรวจสอบซ้ำจนกว่าจะพบองค์ประก

  5. การค้นหาแบบทวิภาคบนรายการเชื่อมโยงเดี่ยวใน C++

    รายการเชื่อมโยงเดี่ยว (Singly Linked List) เป็นโครงสร้างข้อมูลที่เก็บค่าของโหนดและตำแหน่งหน่วยความจำของโหนดถัดไป ซึ่งสามารถเดินทางได้ในทิศทางเดียวเท่านั้น การค้นหาแบบทวิภาค (Binary Search) เป็นอัลกอริทึมค้นหาที่ใช้หลักการแบ่งและเอาชนะ โดยการหาองค์ประกอบตรงกลางของโครงสร้าง แล้วเปรียบเทียบ และเรียกใช

  6. Binary Search Tree - Search และ Insertion Operations ใน C++

    Search Operation ใน BST เปรียบเทียบ key กับ root: key == root → เจอ key > root → ค้นหา Right Subtree key < root → ค้นหา Left Subtree Insertion Operation ใน BST เริ่มที่ Root เปรียบเทียบและไปซ้าย/ขวาจนถึง Leaf แล้วแทรกเป็นลูกของ Leaf นั้น ตัวอย่างโค้ด C++ (Search + Insert) right, key);

  7. Binary Search Tree - Delete Operation ใน C++

    การลบโหนดใน BST มี 3 กรณี: ลบ Leaf Node: ลบตรงๆ ไม่กระทบโหนดอื่น ลบโหนดที่มีลูก 1 ตัว: แทนที่โหนดด้วยลูกของมัน แล้วลบ ลบโหนดที่มีลูก 2 ตัว: หา Inorder Successor (ค่าน้อยที่สุดใน Right Subtree) หรือ Inorder Predecessor มาแทนที่ แล้วลบ Successor/Predecessor แทน ตัวอย่างโค้ด C++ key); } retu

  8. Binary Tree แบบ Array Implementation ใน C++

    การแทน Binary Tree ด้วย Array มี 2 วิธี: 1) Dynamic (Linked List) 2) Sequential (Array) Indexing แบบ 0-based Parent index = p Left child = 2p + 1 Right child = 2p + 2 Root = index 0 Indexing แบบ 1-based Parent index = p Left child = 2p + 1 Right child = 2p Root = index 1 ตัวอย่างโค้ด C++ (0-b

  9. แปลง Binary Tree เป็น Binary Search Tree ใน C++

    โจทย์ ให้ Binary Tree (BT) ต้องการแปลงเป็น Binary Search Tree (BST) โดยคงโครงสร้างต้นไม้เดิมไว้ ความแตกต่าง BT และ BST Binary Tree: โหนดแต่ละตัวมีลูกได้สูงสุด 2 ตัว Binary Search Tree: Left < Root < Right, ทุก Subtree เป็น BST วิธีแปลง (3 ขั้นตอน) Inorder Traversal BT เก็บค่าในอาร์เรย์ ar

  10. ตัวแปรสุ่มแบบ Binomial (Binomial Random Variables) ใน C++

    ความรู้เบื้องต้น Random Variables คือตัวแปรที่เป็นผลลัพธ์ของกระบวนการที่มีโอกาสให้ผลลัพธ์หลายอย่าง เช่น โยนเหรียญ (Head/Tail) Binomial Random Variable คือตัวแปรสุ่มพิเศษที่มีคุณสมบัติ: จำนวนการทดลองคงที่ (n) ผลลัพธ์แต่ละครั้งมี 2 แบบ: สำเร็จ/ล้มเหลว ความน่าจะเป็นสำเร็จคงที่ (p) ทุกครั้ง การทดลองแต่

  11. เรียง Permutation แบบไม่ซ้ำพร้อม Duplicate ใน C++

    โจทย์ ให้สตริงที่อาจมีตัวอักษรซ้ำ (และเรียงแล้ว) ต้องการพิมพ์ Permutation ทั้งหมดที่ไม่ซ้ำกัน แบบเรียงลำดับ ตัวอย่าง: AABC → AABC, AACB, ABAC, ABCA, ACBA, ACAB, BAAC, BACA, BCAA, CABA, CAAB, CBAA วิธีแก้ปัญหา ใช้ Backtracking + Pruning: เรียงสตริงก่อน (input มาเรียงแล้ว) Fix ตัวแรก หา Permutation

  12. พิมพ์ทิศทางเคลื่อนที่อยู่ในขอบเขต [-k, +k] ใน C++

    โจทย์ ให้ขอบเขต K และอาร์เรย์ค่าการเคลื่อนที่ ต้องการหาลำดับทิศทาง (Positive/Negative) ที่ทำให้ตำแหน่งไม่เกิน [-K, +K] ตลอดเวลา ตัวอย่าง: K=56, array=[25,14,31,16,5] → Positive, Positive, Negative, Positive, Positive อัลกอริทึม position = 0 For each move a[i]: If position + a[i] in [-K, K]: mov

  13. หาตำแหน่งตัวเลขที่ต้องลบเพื่อให้หาร 6 ลงตัวใน C++

    โจทย์ ให้ตัวเลข (เป็นสตริง) ต้องการลบตัวเลข 1 หลัก เพื่อให้ตัวเลขที่เหลือหาร 6 ลงตัว คืนตำแหน่ง (1-based index) ที่ต้องลบ ตัวอย่าง: 1324 → ลบหลักที่ 4 (เลข 4) ได้ 132 หาร 6 ลงตัว → Output: 4 วิธีแก้ปัญหา ตัวเลขหาร 6 ลงตัว ต้องหาร 2 และ 3 ลงตัว พิจารณากรณี: หลักสุดท้ายเป็นคี่ ต้องลบหลักสุดท้ายเท่านั

  14. พิมพ์ลูกพี่ลูกน้อง (Cousins) ของโหนดใน Binary Tree ใน C++

    โจทย์ ให้ Binary Tree และโหนดเป้าหมาย ต้องการหาโหนดลูกพี่ลูกน้อง (Cousins) คือโหนดที่อยู่ระดับเดียวกัน (Same Level) แต่มี Parent ต่างกัน วิธีแก้ปัญหา หา Level ของโหนดเป้าหมาย พิมพ์โหนดทั้งหมดใน Level นั้น ยกเว้น: โหนดเป้าหมายเอง Siblings (โหนดที่มี Parent เหมือนกัน) ตัวอย่างโค้ด C++ right);

  15. พิมพ์ตัวอักษรที่ติดกันในบรรทัดเดียวกันใน C++

    โจทย์ ให้สตริง ต้องการพิมพ์ออกมา โดยตัวอักษรที่เรียงติดกัน (เช่น a,b,c หรือ c,b,a) พิมพ์ในบรรทัดเดียวกัน ตัวที่ไม่ติดกัน ขึ้นบรรทัดใหม่ ตัวอย่าง: abcxstk → abc (บรรทัด1), x (บรรทัด2), st (บรรทัด3), k (บรรทัด4) วิธีแก้ปัญหา ลูปผ่านสตริง เปรียบเทียบตัวปัจจุบันกับตัวก่อนหน้า: ถ้า diff == 1 หรือ -1 (ต

  16. พิมพ์รูปสี่เหลี่ยม同心圆 (Concentric Rectangular Pattern) ในเมทริกซ์ 2D C++

    โจทย์ พิมพ์รูปสี่เหลี่ยมซ้อนกัน (Concentric) ในเมทริกซ์ 2D ขนาด (2n-1) x (2n-1) ค่าลดลงจากขอบเข้าสู่ศูนย์กลาง ตัวอย่าง n=4: 4 4 4 4 4 4 4 4 3 3 3 3 3 4 4 3 2 2 2 3 4 4 3 2 1 2 3 4 4 3 2 2 2 3 4 4 3 3 3 3 3 4 4 4 4 4 4 4 4 วิธีแก้ปัญหา เมทริกซ์มีขนาด (2n-1) แบ่งเป็น 2 ส่วน: บน: แถว 0 ถึง n-1 ล่าง:

  17. พิมพ์สตริง Zig-Zag แบบ n แถวใน C++

    โจทย์ ให้สตริงและจำนวนแถว n ต้องการจัดสตริงแบบ Zig-Zag (ไปลงมา) แล้วต่อสตริงแต่ละแถวเข้าด้วยกัน ตัวอย่าง Input: STUVWXYZ, n=2 → ZigZag: Row0: S U W Y, Row1: T V X Z → Output: SUWYTVXZ Input: ABCDEFGH, n=3 → ZigZag: Row0: A E, Row1: B D F H, Row2: C G → Output: AEBDFHCG อัลกอริทึม Step 1: สร้างอาร์

  18. พิมพ์บรรพบุรุษร่วมของสองโหนดใน Binary Tree ใน C++

    โจทย์ ให้ Binary Tree และสองโหนด ต้องการพิมพ์บรรพบุรุษร่วม (Common Ancestors) คือโหนดที่อยู่บนเส้นทางจาก Root ไปยังทั้งสองโหนด วิธีแก้ปัญหา หา Lowest Common Ancestor (LCA) ของสองโหนด จาก Root ท่องหา LCA พิมพ์โหนดทั้งหมดในเส้นทาง (Ancestors ของ LCA) ตัวอย่างโค้ด C++ right = insertNode(6); if

  19. พิมพ์โหนดร่วมของสอง Binary Search Trees ใน C++

    โจทย์ ให้สอง Binary Search Trees (BST) ต้องการหาโหนดที่มีค่าเหมือนกันในทั้งสองต้นไม้ วิธีแก้ปัญหา (Iterative Inorder + 2 Stacks) ทำ Inorder Traversal ทั้งสองต้นพร้อมกันโดยใช้ Stack 2 ตัว: ดันซ้ายสุดทั้งสองต้น push เข้า stack เปรียบเทียบ top ของทั้งสอง stack: เท่ากัน → พิมพ์ค่า, pop ทั้งคู่, ไปขวา

  20. พิมพ์ตัวอักษรร่วมของสองสตริงเรียง A-Z ใน C++

    โจทย์ ให้สองสตริง ต้องการหาตัวอักษรที่ซ้ำกันในทั้งสองสตริง และพิมพ์ตามลำดับ A-Z (Lexicographical) พร้อมจำนวนครั้งที่น้อยกว่า (min count) ถ้าไม่มีร่วมกันพิมพ์ NO COMMON CHARACTERS ตัวอย่าง string1: adsfhslf, string2: fsrakf → Output: affs (a:1, f:2, s:1) string1: abcde, string2: glhyte → Output: No

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:114/301  20-คอมพิวเตอร์/Page Goto:1 108 109 110 111 112 113 114 115 116 117 118 119 120