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

    เพื่อแก้ปัญหาที่เราได้รับอาร์เรย์และคำถาม (Queries) บางอย่าง ตอนนี้ในแต่ละคำถาม เราได้รับช่วง (Range) ตอนนี้เราต้องหาตัวเลขที่ทำให้ผลรวมของ XOR ของพวกเขากับ x เป็นค่าสูงสุด เช่น Input : A = {20, 11, 18, 2, 13} Three queries as (L, R) pairs 1 3 3 5 2 4 Output : 2147483629 2147483645 2147483645 ในปัญ

  2. C++ หาตัวเลขที่ XOR Sum กับอาร์เรย์ที่กำหนดเท่ากับ k

    เพื่อแก้ปัญหาที่กำหนด เราถูกมอบหมายให้หาตัวเลขที่ทำให้ XOR Sum ของอาร์เรย์ที่กำหนดกับตัวเลขนั้นเท่ากับ k เช่น Input: arr[] = {1, 2, 3, 4, 5}, k = 10 Output: 11 Explanation: 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 11 = 10 Input: arr[] = { 12, 23, 34, 56, 78 }, k = 6 Output: 73 ในโปรแกรมนี้ เราจะใช้คุณสมบัติของ XOR ถ้า

  3. C++ หาตัวเลขในช่วงที่มี Digital Root ตามที่กำหนด

    Digital Root ของตัวเลขหาได้จากผลรวมของหลักๆ ถ้าผลรวมเป็นหลักเดียว นั่นคือ Digital Root ในบทช่วยสอนนี้ เราจะอภิบัติปัญหาที่เราได้รับช่วงของตัวเลขและจำนวนเต็ม X และต้องนับว่ามีตัวเลขกี่ตัวในช่วงที่มี Digital Root เป็น X โดย X เป็นตัวเลขหลักเดียว เช่น Input: l = 13, r = 25, X = 4 Output: 2 Explanation

  4. C++ หาตัวเลขที่เป็น Bitwise AND ของ Sub-Array ที่ไม่ว่างอย่างน้อยหนึ่งชุด

    เพื่อแก้ปัญหาที่เราได้รับอาร์เรย์ และต้องหาตัวเลขจำนวนเต็มทั้งหมดที่เป็นไปได้ ซึ่งเป็น Bitwise AND ของ Sub-array ที่ไม่ว่างอย่างน้อยหนึ่งชุด เช่น Input : nums[ ] = { 3, 5, 1, 2, 8 } Output : { 2, 5, 0, 3, 8, 1 } Explanation: 2 เป็น AND ของ {2}, 5 ของ {5}, 0 ของ {1, 2}, {2, 8}, {1, 2, 8}, 3 ของ {3},

  5. C++ หา Largest Divisible Pairs Subset

    เพื่อแก้ปัญหาที่เราได้รับอาร์เรย์ที่ประกอบด้วยสมาชิกที่ไม่ซ้ำกัน ตอนนี้ภารกิจของเราคือหา Subset ที่ทุกคู่หารลงตัวได้อย่างสม่ำเสมอ (Evenly Divisible) คือ สมาชิกที่ใหญ่กว่าหารด้วยสมาชิกที่เล็กกว่าลงตัว เช่น Input : arr[] = {10, 5, 3, 15, 20} Output : 3 Explanation: Subset ใหญ่ที่สุดคือ 10, 5, 20. 10

  6. C++ หา Subset ที่หารลงตัวได้มากที่สุดในอาร์เรย์ (Largest Divisible Subset)

    บทช่วยสอนนี้จะอภิบัติปัญหาที่เราได้รับอาร์เรย์ของจำนวนเต็มบวกที่ไม่ซ้ำกัน เราต้องหา Subset ใหญ่ที่สุด ที่สำหรับทุกคู่ สมาชิกที่ใหญ่กว่าหารด้วยสมาชิกที่เล็กกว่าลงตัว เช่น Input: nums[ ] = { 1, 4, 2, 6, 7} Output: 1 2 4 Explanation: Subset ที่หารลงตัวได้หมดคือ: (1, 2, 4), (1, 2, 6), (1, 7) ฯลฯ มี 2 s

  7. C++ Subtree ใหญ่ที่สุดที่มีจำนวน 1 และ 0 เท่ากัน

    ได้รับ Binary Tree มา ตอนนี้เราต้องหา Subtree ใหญ่ที่สุดที่มีจำนวน 1 และ 0 เท่ากัน ต้นไม้นี้มีแค่ 0 และ 1 เท่านั้น วิธีการแก้ปัญหา ในวิธีนี้ เราจะแทนที่โหนดที่มีค่า 0 ด้วย -1 การทำเช่นนี้จะทำให้โปรแกรมง่ายขึ้น เพราะตอนนี้เราต้องการหา Subtree ใหญ่ที่สุดที่มีผลรวมเท่ากับ 0 ตัวอย่าง โค้ด C++ สำหรับวิธ

  8. C++ Subset ใหญ่ที่สุดที่ผลรวมทุกคู่เป็นจำนวนเฉพาะ

    เพื่อหา Subset ใหญ่ที่สุดจากอาร์เรย์ที่กำหนด ซึ่งผลรวมของทุกคู่เป็นจำนวนเฉพาะ (Prime) สมมติค่าสูงสุดคือ 100,000 เช่น Input: nums[ ] = { 3, 2, 1, 1 } Output: size = 3, subset = { 2, 1, 1 } Explanation: Subsets ที่เป็นไปได้: {3, 2}, {2, 1} และ { 2, 1, 1} ใน {2, 1, 1} ผลรวมคู่ (2,1) คือ 3 เป็นเฉพาะ แล

  9. C++ สลับโหนดใบ (Leaf Nodes) แบบคู่ๆ ใน Binary Tree

    ได้รับ Binary Tree มา งานคือการสลับโหนดใบ (Leaf Nodes) แบบคู่ๆ เช่น Input - Output - ในปัญหานี้ เราจะติดตาม Pointer สองตัวที่ชี้ไปที่โหนดใบที่อยู่ติดกัน และสลับค่าของพวกเขา วิธีการแก้ปัญหา ในวิธีนี้ เราเดินผ่านต้นไม้ หาโหนดใบ และติดตามตัวนับ (Counter) เพื่อตรวจสอบจำนวนปัจจุบัน เทคนิคหลักคือ ถ้าตั

  10. C++ สลับคู่โหนดใน Linked List แบบคู่ๆ (Pairwise Swap)

    เพื่อแก้ปัญหาที่เราต้องสลับโหนดคู่ๆ (Pairwise) ใน Linked List แล้วพิมพ์ออกมา เช่น NULL มีสองวิธีแก้ปัญหา ทั้งสองมีความซับซ้อนด้านเวลา O(N) โดย N คือขนาด Linked List ตอนนี้เราจะสำรวจทั้งสองวิธี วิธี Iterative (วนซ้ำ) ในวิธีนี้ เราจะวนลูปผ่านสมาชิกของ Linked List และสลับคู่ๆ จนกว่าจะถึง NULL ตัวอย่าง

  11. C++ เลขแพนดิจิตอล (Pandigital Number) ในฐานที่กำหนด

    ตัวเลขที่ประกอบด้วยตัวเลขทั้งหมดจาก 0 ถึงฐาน B เรียกว่าเลขแพนดิจิตอล (Pandigital Number) ในฐานนั้น แต่บางตัวเลขมีตัวเลขจาก 1 ถึง 9 เรียกว่า Zero-less Pandigital Numbers ตัวอย่างของเลขแพนดิจิตอลคือ 0123456789, 0789564312 ฯลฯ ในบทช่วยสอนนี้ เราจะอภิบัติปัญหาที่เราได้รับตัวเลขและฐาน และต้องตรวจสอบว่าต

  12. C++ การแบ่ง Linked List รอบค่าที่กำหนดพร้อมรักษาลำดับเดิม

    ในบทช่วยสอนนี้ ให้ Linked List มา เราต้องเก็บตัวเลขที่น้อยกว่า x ไว้หน้ารายการ และตัวอื่นๆ ไว้ท้ายรายการ เรายังต้องรักษาลำดับเดิมเหมือนเดิม เช่น 10 เพื่อแก้ปัญหานี้ เราต้องสร้าง Linked List สามตัว ตอนที่เราพบตัวเลขน้อยกว่า x เราแทรกลงรายการแรก สำหรับค่าเท่ากับ x ใส่รายการที่สอง สำหรับค่ามากกว่า ใส่

  13. C++ แบ่งตัวเลขเป็นสองส่วนที่หารลงตัว

    ในปัญหานี้ เราได้รับสตริงที่สามารถตีความเป็นตัวเลข ตอนนี้เราต้องแบ่งสตริงนั้นออกเป็นสองส่วน โดยส่วนแรกหารด้วย A ลงตัว และส่วนที่สองหารด้วย B ลงตัว (A และ B เป็นจำนวนเต็มที่กำหนด) เช่น Input : str = 123, a = 12, b = 3 Output : YES 12 3 12 หาร 12 ลงตัว และ 3 หาร 3 ลงตัว Input : str = 1200, a = 4, b =

  14. C++ ความยาวเส้นทางที่มีจำนวนการบิด (Bends) มากที่สุด

    เพื่อแก้ปัญหาที่เราได้รับต้นไม้ไบนารี (Binary Tree) ตอนนี้เราต้องหาเส้นทางที่มีจำนวนการบิด (Bends) มากที่สุด โดยการบิด (Bend) ถือว่าเกิดขึ้นเมื่อทิศทางของเส้นทางเปลี่ยนจากซ้ายไปขวาหรือขวาไปซ้าย เช่น Input - Output - 6 ในวิธีนี้ เราจะเดินผ่านต้นไม้และติดตามการเคลื่อนที่ก่อนหน้า หากทิศทางเปลี่ยน เรา

  15. C++ เส้นทางที่มีค่าเฉลี่ยสูงสุด (Path with Maximum Average Value)

    ได้รับเมทริกซ์ 2 มิติ ในปัญหานี้ เราต้องหาเส้นทางที่มีค่าเฉลี่ยสูงสุด แหล่งที่มา (Source) คือเซลล์มุมซ้ายบน และปลายทาง (Destination) คือเซลล์มุมขวาล่าง เช่น 9 ผลรวมของเส้นทางคือ 29 และค่าเฉลี่ยคือ 29/5 = 5.8 ในปัญหานี้ เราได้รับอนุญาตให้เคลื่อนที่ไปขวาหรือลงเท่านั้น ซึ่งทำให้ปัญหาง่ายขึ้น เพราะเรา

  16. C++ เลขเพนโตป (Pentatope Number)

    เลขเพนโตป (Pentatope Number) ถูกอธิบายว่าเป็นตัวเลขตัวที่ห้าในสามเหลี่ยมปาสคาล (Pascals Triangle) เนื่องจากเป็นตัวที่ห้า จึงต้องมีตัวเลขอย่างน้อย 5 ตัวในสามเหลี่ยมปาสคาล ดังนั้นอนุกรมนี้ตัวแรกเริ่มจาก 1 4 6 4 1 แถวที่สี่ของสามเหลี่ยมปาสคาล ในบทช่วยสอนนี้ เราต้องหาเลขเพนโตปลำดับที่ n เช่น Input : 1

  17. C++ เส้นรอบรูปและพื้นที่ของสี่เหลี่ยมขนานวาริ뇽 (Varignon's Parallelogram)

    สี่เหลี่ยมขนานวาริ뇽 (Varignons Parallelogram) ถูกสร้างขึ้นโดยการเชื่อมจุดกึ่งกลางของแต่ละด้านของสี่เหลี่ยม (Quadrilateral) สมมติเรามีสี่เหลี่ยม ABCD จุดกึ่งกลางของแต่ละด้านคือ P, Q, R, และ S หากเราเชื่อมจุดกึ่งกลางทั้งหมด จะได้สี่เหลี่ยมขนาน PQRS ซึ่งเรียกว่าสี่เหลี่ยมขนานวาริ뇽 ในบทช่วยสอนนี้ เราจ

  18. C++ การเรียงสับเปลี่ยนอาร์เรย์ที่มีค่าน้อยกว่าอาร์เรย์อื่น

    B[i] มีมากที่สุด เช่น Input: A = [12, 22, 41, 13], B = [1, 20, 10, 12] Output: 12, 22, 41, 13 Input: A = [2, 5, 9, 7], B = [1, 12, 4, 54] Output: 2 7 5 9 หลายคำตอบอาจเป็นไปได้ ในกรณีนั้นเราจะพิมพ์คำตอบใดคำตอบหนึ่ง B[i] ให้มากที่สุด ดังนั้นเราจะแก้ปัญหานี้แบบ Greedy (貪婪算法) วิธีการแก้ปัญหา ในวิธีนี

  19. C++ การเรียงสับเปลี่ยนของสตริงที่กำหนดด้วย STL

    การเรียงสับเปลี่ยน (Permutation) ของสตริงเกิดขึ้นเมื่อตัวอักษรของสตริงที่กำหนดถูกจัดเรียงใหม่ในรูปแบบใดก็ได้ ในบทช่วยสอนนี้ เราจะอภิบัติวิธีพิมพ์การเรียงสับเปลี่ยนทั้งหมดของสตริงที่กำหนดโดยใช้ Standard Template Library (STL) ของ C++ เช่น Input : s = ADT Output : ADT, ATD, DAT, DTA, TAD, TDA Explana

  20. C++ การเรียงสับเปลี่ยน n เลือก r พร้อม k อยู่ด้วยกัน

    กำหนด n, r, k ตอนนี้เราต้องหาว่าสามารถเลือก r สิ่งจาก n ได้กี่วิธี โดยที่ k สิ่งเฉพาะต้องอยู่ด้วยกันเสมอ เช่น Input : n = 8, r = 5, k = 2 Output : 960 Input : n = 6, r = 2, k = 2 Output : 2 เราต้องมีความรู้เล็กน้อยสำหรับปัญหานี้ เพราะโจทย์ถามให้หาการเรียงสับเปลี่ยน (Permutation) ของ n และ r ที่ k ส

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:278/301  20-คอมพิวเตอร์/Page Goto:1 272 273 274 275 276 277 278 279 280 281 282 283 284