Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. โปรแกรมจัดการคำถามอัปเดตค่าและหา GCD ในช่วงด้วย Segment Tree ใน C++

    ให้อาร์เรย์ arr[] ขนาด N และ Q คำถาม 2 ประเภท: Type 1: {1, index, value} — เพิ่มค่าที่ index ด้วย value Type 2: {2, L, R} — หา GCD ขององค์ประกอบในช่วง [L, R] ตัวอย่าง: arr[] = {5, 1, 7, 3, 8}, Q = 3 Queries: {{2, 2, 5}, {1, 3, 6}, {2, 2, 5}} วิธีแก้ปัญหา ใช้ Segment Tree เก็บค่า GCD ของช่วงต่างๆ ใ

  2. โปรแกรมตรวจสอบความสัมพันธ์บรรพบุรุษ-ลูกหลานในต้นไม้ด้วย C++

    ในโจทย์นี้ ให้ต้นไม้ N โหนด และ Q คำถาม แต่ละคำถามมีคู่ (i, j) ต้องการตรวจสอบว่าโหนด i เป็นบรรพบุรุษของโหนด j หรือไม่ ตัวอย่าง: Q = 2, query[][] = {{3, 5}, {1, 6}} เอาต์พุต No Yes คำอธิบาย i=3, j=5: โหนด 3 ไม่ใช่บรรพบุรุษของ 5 → NO i=1, j=6: โหนด 1 เป็นบรรพบุรุษของ 6 → YES วิธีแก้ปัญหา ใช้ DFS คำนว

  3. โปรแกรมหา Triplet nums[i] < nums[k] < nums[j] จากลิสต์ nums ใน C++

    กำหนดให้มีลิสต์ตัวเลขชื่อ nums ต้องตรวจสอบว่ามี triplet (i, j, k) ที่ทำให้ i < j < k และ nums[i] < nums[k] < nums[j] หรือไม่ ตัวอย่าง Input: nums = [2, 12, 1, 4, 4] Output: True เพราะ [2, 12, 4] ตรงเงื่อนไข 2 < 4 < 12 อัลกอริทึม สร้างอาร์เรย์ left ขนาด n โดย left[i] = ค่าต่ำสุด

  4. โปรแกรมหาความต่างน้อยสุดระหว่างค่าสูงสุดและต่ำสุดจากการเลือกสมาชิกแต่ละลิสต์ใน C++

    สมมติว่าเรามีลิสต์ของลิสต์หลายๆ ลิสต์ ต้องการเลือกสมาชิกหนึ่งตัวจากแต่ละลิสต์ แล้วหาความต่างระหว่างค่าสูงสุดและต่ำสุดของตัวที่เลือก ให้หาความต่างน้อยสุดที่เป็นไปได้ ตัวอย่าง: lists = [[30, 50, 90], [85], [35, 70]] ผลลัพธ์คือ 20 เลือก 90, 85, 70 ความต่าง = 90 - 70 = 20 ขั้นตอนการแก้ปัญหา maxVal := -

  5. โปรแกรมหาผลรวมสูงสุดต่ำสุดของ k ส่วนย่อยใน C++

    สมมติว่าเรามีรายการตัวเลข nums และค่า k เราสามารถแบ่งรายการเป็น k ส่วนย่อยที่ไม่ว่างเปล่า ต้องการหาค่าต่ำสุดของ ผลรวมสูงสุด ระหว่าง k ส่วนนั้น ตัวอย่าง: nums = [2, 4, 3, 5, 12], k = 2 ผลลัพธ์คือ 14 เพราะแบ่งเป็น [2, 4, 3, 5] (ผลรวม 14) และ [12] (ผลรวม 12) ค่าสูงสุดคือ 14 ขั้นตอนการแก้ปัญหา สร้างฟัง

  6. โปรแกรมนับจำนวนพาลินโดรมหลังแบ่งสตริงน้อยที่สุดใน C++

    สมมติว่าเรามีสตริงตัวพิมพ์เล็ก s เราต้องแบ่งสตริงออกเป็นจำนวนน้อยที่สุด โดยแต่ละส่วนต้องเป็นพาลินโดรม (อ่านจากหน้าหลังได้เหมือนกัน) แล้วหาจำนวนส่วนที่ได้ ตัวอย่าง: s = levelracecar ผลลัพธ์คือ 2 เพราะแบ่งได้เป็น level และ racecar ซึ่งทั้งคู่เป็นพาลินโดรม ขั้นตอนการแก้ปัญหา n := ความยาวของสตริง A สร้

  7. โปรแกรมหาขนาด k ของเมทริกซ์ย่อย k×k ที่มีค่าเท่ากันทุกเซลล์ใน C++

    สมมติว่าเรามีเมทริกซ์ 2 มิติ เราต้องการหาค่า k ที่มากที่สุด ซึ่งมีเมทริกซ์ย่อยขนาด k×k ที่ทุกองค์ประกอบมีค่าเท่ากัน ตัวอย่างเช่น หากอินพุตเป็นเมทริกซ์: 1183 1555 2555 4555 ผลลัพธ์จะเป็น 3 เนื่องจากมีเมทริกซ์ย่อย 3×3 ที่มีค่าเป็น 5 ทุกเซลล์ ขั้นตอนการแก้ปัญหา n := จำนวนแถวของเมทริกซ์, m := จำนวน

  8. โปรแกรมค้นหาต้นทุนต่ำสุดของต้นไม้การแยกวิเคราะห์ใน C++

    สมมติว่าเรามีรายการตัวเลขที่ไม่ซ้ำกันและเรียงลำดับแล้ว ซึ่งแสดงจุดแบ่ง (breakpoints) ในสตริง เราต้องการสร้างต้นไม้จากกฎเหล่านี้: มีโหนดที่มีค่า (a, b) โดยที่ a และ b เป็นจุดแบ่ง หมายความว่าโหนดครอบคลุมดัชนี [a, b] ในสตริง โหนดรากครอบคลุมทุกจุดแบ่ง (ทั้งสตริงทั้งหมด) ช่วงของลูกซ้ายและลูกขวาของโหนดจะ

  9. หาปริมาณน้ำฝนที่เก็บได้ระหว่างหุบเขาในเมทริกซ์ 2D (C++)

    บทนำ ในบทช่วยสอนนี้ เราจะคำนวณ ปริมาณน้ำฝนที่เก็บได้ (Trapping Rain Water II) ในเมทริกซ์ 2D ที่แต่ละเซลล์แทนความสูงของภูมิประเทศ ตัวอย่าง Matrix 3×4: 6668 6458 6666 Output: 3 (น้ำเก็บได้ที่ตำแหน่ง [1,1] และ [1,2] รวม 3 หน่วย) อัลกอริทึม: Priority Queue (Min-Heap) + BFS คล้าย T

  10. หาต้นทุนต่ำสุดเลือก k Unique Subsequences จากสตริงใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะเลือก k unique subsequences จากสตริง s เพื่อให้ ต้นทุนรวมน้อยที่สุด กฎต้นทุน ต้นทุนของ subsequence = len(s) - len(subsequence) คือ ยิ่ง subsequence สั้น ยิ่งแพง (เพราะตัดทิ้งมาก) ตัวอย่าง s = pqrs, k = 4 Output: 3 Subsequences: pqrs (cost 0), pqr (cost 1), pqs (cost 1), p

  11. หาระยะทางสั้นที่สุดระหว่างสองจุดใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา ระยะทางยกกำลังสองน้อยที่สุด (squared distance) ระหว่างจุดใดๆ สองจุดในชุดพิกัดที่กำหนด ตัวอย่าง coordinates = {{1, 2}, {1, 4}, {3, 5}} Output: 4 (ระยะห่าง (1,2) และ (1,4) = (0)²+(2)² = 4) อัลกอริทึม: Sweep Line + Balanced BST (Map) เรียงจุดตาม x แล้ว sweep จากซ้ายไปขวา:

  12. หาผลรวมมัธยฐานของทุก sublist ความยาวคี่ใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา ผลรวมของมัธยฐาน (median) ของทุก sublist (subarray) ที่มีความยาวเป็นเลขคี่ ตัวอย่าง nums = [2, 4, 6, 3] Odd-length sublists: [2], [4], [6], [3], [2,4,6], [4,6,3] Medians: 2, 4, 6, 3, 4, 4 Sum = 2+4+6+3+4+4 = 23 อัลกอริทึม: Two Heaps สำหรับแต่ละ Starting Index สำหรับแต่ล

  13. หาจำนวนการสลับขั้นต่ำจัดคู่ถุงเท้าให้อยู่ติดกันใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา จำนวนการสลับ (swaps) ขั้นต่ำ เพื่อจัดเรียงถุงเท้า (socks) ให้แต่ละคู่อยู่ติดกัน ปัญหา อาร์เรย์ row แทนถุงเท้าวางเรียง: คู่คือ (0,1), (2,3), (4,5), ... ต้องการจัดให้แต่ละคู่อยู่ติดกัน: (0,1), (2,3), ... หาจำนวน swap น้อยที่สุด ตัวอย่าง row = [0, 5, 6, 2, 1, 3, 7, 4] Out

  14. หาจำนวนรอบขั้นต่ำจับคู่ได้ใน Tree (C++)

    บทนำ ในบทช่วยสอนนี้ เราจะหา จำนวนรอบ (rounds) ขั้นต่ำ ที่เราต้องใช้เพื่อจับคู่ (catch) คู่แข่งในต้นไม้ (Tree) กฎของเกม Tree: กราฟไม่มีวงจร ไม่มีทิศทาง เราอยู่โหนด x, คู่แข่งอยู่โหนด y สลับกันเดิน: เราเดินก่อน แล้วคู่แข่งเดิน สลับกันไปเรื่อยๆ คู่แข่งสามารถ เลือกไม่เดิน (stay) ได้ เราจับค

  15. หาจำนวนขั้นตอนขั้นต่ำให้ทุกคนพบกันที่เซลล์เดียวกันใน Grid (Python)

    บทนำ ในบทช่วยสอนนี้ เราจะหา จำนวนขั้นตอนขั้นต่ำ ให้ทุกคน (คน = ค่า 2 ใน grid) เดินพบกันที่เซลล์เดียวกัน โดยคนเดินได้ 4 ทิศทาง (บน/ล่าง/ซ้าย/ขวา) หรืออยู่กับที่ ใช้เวลา 1 หน่วยต่อขั้นตอน ผนัง = 1, ทางเดิน = 0 ตัวอย่าง Grid: 2010 1002 2020 Output: 2 (พบกันที่ [1,1] ทุกคนถึงได้ภาย

  16. หา Top View ของ Binary Tree ใน Python

    บทนำ ในบทช่วยสอนนี้ เราจะหา Top View (มุมมองจากด้านบน) ของ Binary Tree โดยใช้ Python Top View คืออะไร? มองต้นไม้จากด้านบน โหนดที่มองเห็นคือโหนดที่มี horizontal distance (HD) แต่ละค่า ตัวแรกที่เจอ (ระดับตื้นที่สุด) HD: ราก=0, ซ้าย=-1, ขวา=+1, ซ้ายของซ้าย=-2, ฯลฯ ตัวอย่าง Input tree: 5

  17. นับจำนวนวิธีวางโดมิโนและโตรมิโนเติมพื้นที่ 2×N ใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะนับจำนวนวิธีการปูพื้นที่ 2×N ด้วย: Domino: ขนาด 2×1 (ตั้งตรง) หรือ 1×2 (นอน) Tromino: รูปตัว L (3 ช่อง) สามารถหมุนได้ 4 ทิศทาง ตัวอย่าง N = 3 → Output: 5 ความสัมพันธ์เวียนเกิด (Recurrence) ให้ dp[n] = จำนวนวิธีปู 2×n dp[1] = 1 (1 โดมิโนตั้ง) dp[2] = 2 (2 โดมิโนตั้ง

  18. นับจำนวน subsequence ที่เท่ากับ target ใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะนับจำนวน subsequence ของ s ที่เท่ากับ t โดย s และ t เป็นสตริงตัวพิมพ์เล็ก ผลลัพธ์ mod 10⁹+7 ตัวอย่าง Input: s = abbd, t = bd Output: 2 Subsequences: s[1]+s[3]=bd, s[2]+s[3]=bd อัลกอริทึม: Dynamic Programming ให้ dp[j] = จำนวนวิธีสร้าง prefix t[0..j-1] จาก prefix ของ s ที่

  19. นับจำนวน subsequence ที่ไม่ซ้ำกันของสตริงใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะนับ จำนวน subsequence ที่ไม่ซ้ำกัน (unique non-empty subsequences) ของสตริง s ผลลัพธ์ mod 10⁹+7 ตัวอย่าง Input: xxy Output: 5 Subsequences: x, xx, xy, y, xxy อัลกอริทึม: Dynamic Programming ให้ dp[i] = จำนวน unique subsequences ของ prefix สูงสุด i เมื่อเพิ่มตัวอักษร c ใหม

  20. หาต้นทุนขั้นต่ำในการจ้างงาน k คนตามประสิทธิภาพและค่าใช้จ่ายใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา ต้นทุนขั้นต่ำ ในการจ้างงาน k พนักงาน โดยที่: พนักงาน i มี ประสิทธิภาพ performance[i] พนักงาน i ต้องได้ค่าจ้างอย่างน้อย costs[i] ค่าจ้างต้อง สัมพันธ์กับประสิทธิภาพ (ผู้ที่ประสิทธิภาพสูงกว่าได้ค่าจ้างมากกว่าตามสัดส่วน) ตัวอย่าง performance = [5, 3, 2], costs = [1

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:237/301  20-คอมพิวเตอร์/Page Goto:1 231 232 233 234 235 236 237 238 239 240 241 242 243