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

    แนวคิดเมื่อได้รับอาร์เรย์ A ที่มี N องค์ประกอบ และจำนวนเต็มสองจำนวน l และ r โดยที่ 1≤ ax ≤ 105 และ 1≤ l≤ r≤ N เราสามารถเลือกองค์ประกอบใดๆ ของอาร์เรย์ (สมมติว่าเป็น ax) และลบมันออก รวมถึงลบองค์ประกอบทั้งหมดที่เท่ากับ ax+1, ax+2 … ax+R และ ax-1, ax-2 … ax-L ออกจากอาร์เรย์

  2. หาผลรวมสูงสุดของ Triplet ในอาร์เรย์ที่ i < j < k และ a[i] < a[j] < a[k] ใน C++

    แนวคิดเมื่อได้รับอาร์เรย์ของจำนวนเต็มบวกขนาด n งานของเราคือการหาผลรวมสูงสุดของ triplet (ai + aj + ak) ที่ทำให้ 0 <= i < j < k < n และ ai< aj< akอินพุตa[] = 3 6 4 2 5 10เอาต์พุต19คำอธิบายTriplet ที่เป็นไปได้ทั้งหมด:- 3 4 5 => ผลรวม = 12 3 6 10 => ผลรวม = 19 3 4 10 => ผลรวม

  3. หา Median ของ BST ใน O(n) Time และ O(1) Space ด้วย C++

    แนวคิด กำหนด Binary Search Tree (BST) หา Median: จำนวนโหนดคู่: Median = (โหนดที่ n/2 + โหนดที่ (n+1)/2) / 2 จำนวนโหนดคี่: Median = โหนดที่ (n+1)/2 ตัวอย่าง BST (7 โหนด): Inorder = 2, 4, 5, 7, 8, 9, 10 → Median = 7 BST (6 โหนด): Inorder = 2, 4, 5, 7, 8, 9 → Median = (5+7)/2 = 6 วิธีแก้: Morris I

  4. หา Memory Conflicts ระหว่าง Multiple Threads ใน C++

    สมมติมี RAM จัดเป็นบล็อก มีหลายโปรเซสทำงาน แต่ละ Thread ได้ข้อมูล: (Thread T, Memory Block M, Time t, R/W) แสดงว่า Thread T เข้าถึงบล็อก M เวลา t ด้วยการอ่าน (R) หรือเขียน (W) เงื่อนไข Conflict หลายการอ่าน (Read) ตำแหน่งเดียวกัน → ไม่ใช่ Conflict การเขียน (Write) ระหว่างเวลา x-5 ถึง x+5 ของบล็อก

  5. หา Minimum Adjustment Cost ของอาร์เรย์ใน C++

    แนวคิด กำหนดอาร์เรย์จำนวนเต็มบวก ต้องปรับค่าแต่ละอิลิเมนต์ ให้ความต่างระหว่างโหนดติดกัน ≤ target เป้าหมาย: ลด Adjustment Cost ให้น้อยที่สุด ซึ่งนิยามว่า Σ|A[i] – A_new[i]| สำหรับทุก i (0 ≤ i ≤ n-1) สมมติค่าทุกตัว < M = 100 ตัวอย่าง Input: arr = [56, 78, 53, 62, 40, 7, 26, 61, 50, 48], target = 20

  6. หา Minimum s-t Cut ใน Flow Network ด้วย C++

    ใน Flow Network, s-t cut คือการตัดที่แยก source (s) และ sink (t) ออกเป็น subset ต่างกัน ประกอบด้วยขอบ (edges) ที่ไปจาก source side ไป sink side ความจุ (capacity) ของ cut = ผลรวมความจุขอบใน cut-set ภารกิจคือหา minimum capacity s-t cut และแสดงขอบทั้งหมดของ cut นั้น ตัวอย่าง กราฟ 6 โหนด (ภาพ) → Outpu

  7. หาเวลาน้อยที่สุดเพื่อทำงานทั้งหมดภายใต้เงื่อนไขที่กำหนดใน C++

    แนวคิด กำหนดอาร์เรืองานที่แต่ละงานใช้เวลาต่างกัน มี k คนรับมอบหมาย (identical assignees) และทราบว่า 1 คนใช้เวลา t ต่อ 1 หน่วยงาน หาเวลาน้อยที่สุดเพื่อทำงานทั้งหมดภายใต้เงื่อนไข: คนรับมอบหมายได้รับเฉพาะงานที่ติดกัน (contiguous jobs) ไม่มี 2 คนแบ่งปันงานเดียวกัน (งานไม่สามารถแบ่งให้หลายคนได้) ตัวอ

  8. หาตัวเลขที่หายไปใน Sorted Array ของจำนวนติดต่อกันใน C++

    แนวคิด กำหนดอาร์เรย์ array[] ขนาด n จำนวนเต็มที่ต่างกัน เรียงจากน้อยไปมากแบบติดต่อกัน แต่ขาด 1 ตัว หาตัวที่ขาดไป ตัวอย่าง Input: {1, 2, 3, 4, 5, 6, 7, 9} → Output: 8 Input: {-4, -2, -1, 0, 1, 2} → Output: -3 Input: {1, 2, 3, 4} → Output: -1 (ไม่มีตัวหาย) หลักการ ความสม่ำเสมอ (Consistency): ควา

  9. หาผลคูณของผลรวมข้อมูลใบ (Leaves) ในระดับเดียวกันของ Binary Tree ใน C++

    แนวคิด กำหนด Binary Tree ต้องคืนค่า: แต่ละระดับ คำนวณผลรวมของใบ (leaves) ทั้งหมดในระดับนั้น (ถ้าไม่มีใบ ข้ามไป) นำผลรวมแต่ละระดับมาคูณกัน แล้วคืนค่า ตัวอย่างที่ 1 Tree: 3 / \ 8 6 \ 10 Output: 80 ระดับ 1: ไม่มีใบ, ระดับ 2: ใบคือ 8, ระดับ 3: ใบคือ 10 → 8 × 10 = 80 ตัวอ

  10. หา N จำนวนที่ต่างกันซึ่ง Bitwise OR เท่ากับ K ใน C++

    แนวคิด กำหนดจำนวนเต็ม N และ K หา N จำนวนเต็มที่ต่างกันซึ่ง Bitwise OR ของทั้งหมดเท่ากับ K หาไม่ได้ให้พิมพ์ -1 ตัวอย่างที่ 1 Input: N = 4, K = 6 Output: 6 0 1 2 ตัวอย่างที่ 2 Input: N = 11, K = 6 Output: -1 (ไม่สามารถหาได้) หลักการ ถ้า Bitwise OR ของลำดับเท่ากับ K → บิตที่เป็น 0 ใน K ต้องเป็น 0

  11. หา Permutation ที่ n-th แบบ Lexicographical ของสตริงใน C++

    แนวคิด กำหนดสตริงความยาว m ประกอบตัวอักษรพิมพ์เล็ก בלבד หา permutation ที่ n-th แบบ lexicographical (เรียงตามพจนานุกรม) ตัวอย่างที่ 1 Input: str[] = pqr, n = 3 Output: qpr คำอธิบาย: Permutation ทั้งหมดเรียงแล้ว: pqr, prq, qpr, qrp, rpq, rqp ตัวอย่างที่ 2 Input: str[] = xyx, n = 2 Output: xyx คำอธ

  12. หาพจน์ที่ n ของความสัมพันธ์เวียนเกิดที่กำหนดใน C++

    แนวคิด สมมติ bn เป็นลำดับตัวเลข ที่แสดงด้วยความสัมพันธ์เวียนเกิด (recurrence relation) b₁ = 1 และ bₙ₊₁/bₙ = 2ⁿ ภารกิจคือหาค่า log₂(bₙ) สำหรับ n ที่กำหนด อินพุต 6 เอาต์พุต 15 คำอธิบาย log₂(bₙ) = (n * (n - 1)) / 2 = (6*(6-1))/2 = 15 อินพุต 200 เอาต์พุต 19900 วิธีการ bₙ₊₁/bₙ = 2ⁿ bₙ/bₙ₋₁ = 2ⁿ⁻¹ ...

  13. หาจำนวนขอบที่สามารถหักในต้นไม้ให้ Bitwise OR ของต้นไม้สองต้นที่ได้เท่ากันใน C++

    แนวคิด สำหรับต้นไม้ที่มี m โหนดและตัวเลขผูกกับทุกโหนด เราสามารถหักขอบไหนขอบหนึ่งได้ ซึ่งจะสร้างต้นไม้ใหม่ 2 ต้น ภารกิจคือนับจำนวนขอบที่ทำให้ Bitwise OR ของโหนดในต้นไม้สองต้นที่เกิดหลังหักขอบนั้นเท่ากัน ค่าของทุกโหนด ≤ 10^6 อินพุต values[] = {1, 3, 1, 3} 1 / | \ 2 3 4 เอาต์พุต 2 ขอบระหว่า

  14. หาตัวเลขต้นฉบับจาก gcd() ของทุกคู่ใน C++

    แนวคิด สำหรับอาร์เรย์ array[] ที่มี GCD ของทุกคู่ที่เป็นไปได้ของอีกอาร์เรย์หนึ่ง ภารกิจคือหาตัวเลขต้นฉบับที่ใช้คำนวณ GCD array อินพุต array[] = {6, 1, 1, 13} เอาต์พุต 13 6 gcd(13, 13) = 13 gcd(13, 6) = 1 gcd(6, 13) = 1 gcd(6, 6) = 6 อินพุต arr[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1

  15. หาคู่ที่ผลรวมเท่ากับค่ากำหนดใน Singly Linked List เรียงลำดับโดยไม่ใช้พื้นที่เพิ่มใน C++

    สมมติเรามี singly linked list และค่า x เราต้องหาคู่ที่ผลรวมเท่ากับ x โดยไม่สามารถใช้พื้นที่เพิ่มเติม (extra space) ได้ และ time complexity คาดว่าจะเป็น O(n) เช่น ถ้าอินพุตเป็น 4→7→8→9→10→11→12, x = 19 เอาต์พุตจะเป็น [(7, 12), (8, 11), (9, 10)] ขั้นตอนการแก้: กำหนดฟังก์ชัน convert_to_xor() รับ sta

  16. หาคู่แถวในเมทริกซ์ไบนารีที่มีความต่างบิตสูงสุดใน C++

    สมมติเรามีเมทริกซ์ไบนารี เราต้องหาคู่แถวในเมทริกซ์ที่มีความต่างบิต (bit difference) สูงสุด เช่น ถ้าอินพุตเป็นเมทริกซ์ เอาต์พุตจะเป็น [2,3] เพราะความต่างบิตระหว่างแถว 2 และแถว 3 คือ 4 ซึ่งเป็นค่าสูงสุด ขั้นตอนการแก้: กำหนดโครงสร้าง Trie Node มี value และลูกสองตัว กำหนดฟังก์ชัน get_max_bit_diff() ร

  17. หาคู่ที่มีผลคูณกำหนดใน Doubly Linked List ที่เรียงลำดับแล้วใน C++

    แนวคิด สำหรับ Doubly Linked List ที่เรียงลำดับแล้วของสมาชิกบวกที่ไม่ซ้ำกัน ภารกิจของเราคือหาคู่ใน Doubly Linked List ที่ผลคูณเท่ากับค่า x ที่กำหนด โดยไม่ใช้พื้นที่เพิ่มเติม (extra space) อินพุต List = 1 <=> 2 <=> 4 <=> 5 <=> 6 <=> 8 <=> 9, x = 8 เอาต์พุต (1, 8),

  18. ผลรวมสูงสุดที่ไม่มีสมาชิกสองตัวติดกันใน C++

    ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ภารกิจคือการสร้างโปรแกรมเพื่อหาผลรวมสูงสุดที่ไม่มีสมาชิกสองตัวติดกันใน C++ คำอธิบายปัญหา เราต้องหาผลรวมสูงสุดของลำดับจากอาร์เรย์ โดยที่ไม่มีตัวเลข 2 ตัวจากลำดับผลรวมที่อยู่ติดกันในอาร์เรย์ ตัวอย่างเพื่อเข้าใจปัญหา: อินพุต arr[] = {5, 1, 3, 7, 9, 2, 5} เอาต์พุต 22

  19. ผลรวมสูงสุดที่ไม่มีสมาชิกสองตัวติดกัน - เซต 2 ใน C++

    ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ภารกิจคือการสร้างโปรแกรมเพื่อหาผลรวมสูงสุดที่ไม่มีสมาชิกสองตัวติดกันใน C++ คำอธิบายปัญหา เราต้องหาผลรวมสูงสุดของลำดับจากอาร์เรย์ โดยที่ไม่มีตัวเลข 2 ตัวจากลำดับผลรวมที่อยู่ติดกันในอาร์เรย์ ตัวอย่างเพื่อเข้าใจปัญหา: อินพุต arr[] = {5, 1, 3, 7, 9, 2, 5} เอาต์พุต 22

  20. Trace สูงสุดของ sub-matrix ใดๆ ในเมทริกซ์ที่กำหนดใน C++

    ในปัญหานี้ เราได้รับอาร์เรย์สองมิติ arr[][] ภารกิจคือการสร้างโปรแกรมเพื่อหา Trace สูงสุดที่เป็นไปได้สำหรับ sub-matrix ใดๆ ของเมทริกซ์ที่กำหนดใน C++ คำอธิบายปัญหา เราต้องหา trace สูงสุดสำหรับ sub-matrix ใดๆ Trace คือผลรวมของสมาชิกบน diagonal หลักของเมทริกซ์ ตัวอย่างเพื่อเข้าใจปัญหา: อินพุต arr[][]

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:198/301  20-คอมพิวเตอร์/Page Goto:1 192 193 194 195 196 197 198 199 200 201 202 203 204