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

    สมมติว่าเรามีต้นไม้ไบนารี เราต้องแปลงนี้เป็นรายการเชื่อมเดี่ยว (แบบ in-place)เช่น ถ้าอินพุตเป็น:ผลลัพธ์จะเป็น:เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนต่อไปนี้:ตั้ง prev := nullกำหนดฟังก์ชันแบบเรียกซ้ำ solve() ที่รับ root เป็นอินพุตถ้า root เป็น null ให้คืนค่าsolve(ขวาของ root)solve(ซ้ายของ root)ขวาของ roo

  2. โปรแกรมหาจำนวนศัตรูสูงสุดที่จะถูกฆ่าโดยการวางระเบิดใน C++

    สมมติว่าเรามีเมทริกซ์ 2D ที่มีค่า 3 ค่า คือ 2, 1, และ 0 โดย 2 แทนศัตรู 1 แทนกำแพง และ 0 แทนเซลล์ว่าง เราต้องหาจำนวนศัตรูสูงสุดที่เราสามารถฆ่าได้ด้วยระเบิดหนึ่งลูก ระเบิดจะฆ่าศัตรูทั้งหมดในแถวและคอลัมน์เดียวกันจากจุดวางจนกระทั่งชนกำแพง และเราสามารถวางระเบิดได้เฉพาะที่เซลล์ว่างเท่านั้นเช่น ถ้าอินพุตเป

  3. โปรแกรมหามุมระหว่างเข็มนาฬิกาชั่วโมงและนาทีใน C++

    สมมติว่าเรามีค่าชั่วโมงและนาที เราต้องหามุมเล็กกว่าที่เกิดระหว่างเข็มชั่วโมงและเข็มนาทีเช่น ถ้าอินพุตเป็น hour = 12 minutes = 45 ผลลัพธ์จะเป็น 112.5เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนต่อไปนี้:ถ้า h = 12 ให้ตั้ง h := 0ถ้า m = 60 ให้ตั้ง m := 0hAngle := 0.5 * (60*h + m)mAngle := 6*mret := |hAngle - mAn

  4. โปรแกรมหาจำนวนกลุ่มขั้นต่ำของหอสื่อสารใน C++

    สมมติว่าเรามีเมทริกซ์ไบนารี 2D โดย 1 แทนหอสื่อสาร และ 0 แทนเซลล์ว่าง หอสื่อสารสามารถสื่อสารได้ดังนี้: 1. ถ้าหอ A และหอ B อยู่แถวเดียวกันหรือคอลัมน์เดียวกัน พวกเขาสามารถสื่อสารได้ 2. ถ้าหอ A พูดกับ B ได้ และ B พูดกับ C ได้ แล้ว A พูดกับ C ได้ (สมบัติข้ามถัด) เราต้องหาจำนวนกลุ่มหอสื่อสารทั้งหมด (กลุ่ม

  5. โปรแกรมหาต้นทุนในการลบตัวอักษรซ้ำติดกันพร้อมค่าใช้จ่ายใน C++

    สมมติว่าเรามีสตริงตัวอักษรพิมพ์เล็กและมีรายการค่าใช้จ่ายที่เป็นค่าไม่ติดลบ เรียกว่า costs สตริงและรายการมีความยาวเท่ากัน เราสามารถลบตัวอักษร s[i] ด้วยค่าใช้จ่าย costs[i] และทั้ง s[i] และ costs[i] จะถูกลบออก เราต้องหาต้นทุนขั้นต่ำในการลบตัวอักษรที่ซ้ำติดกันทั้งหมดเช่น ถ้าอินพุตเป็น s = xxyyx nums = [

  6. โปรแกรมหาจำนวนศูนย์ท้ายในแฟกทอเรียลของ n ใน C++

    สมมติว่าเรามีตัวเลข n เราต้องหาจำนวนศูนย์ท้ายของ n!เช่น ถ้าอินพุตเป็น n = 20 ผลลัพธ์จะเป็น 4 เพราะ 20! = 2432902008176640000เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนต่อไปนี้:กำหนด count := 0ลูป for i := 5, (n/i) >= 1, อัปเดต i := i * 5 ให้ทำ:count := count + (n / i)คืนค่า countลองดูการนำไปใช้งานต่อไปนี้

  7. ผลรวมสูงสุดของสองซับอาร์เรย์ที่ไม่ทับซ้อนใน C++

    สมมติว่าเรามีอาร์เรย์ A ของจำนวนเต็ม เราต้องหาผลรวมสูงสุดขององค์ประกอบในสองซับอาร์เรย์ที่ไม่ทับซ้อนกัน ความยาวของซับอาร์เรย์เหล่านี้คือ L และ Mกล่าวอย่างแม่นยำ เราต้องหา V สูงสุดที่ทำให้:V = (A[i] + A[i+1] + ... + A[i+L-1]) + (A[j] + A[j+1] + ... + A[j+M-1]) และเป็นไปได้เพียงหนึ่งในเงื่อนไข:0 <=

  8. การเคลื่อนหินจนเรียงติดกัน II ใน C++

    สมมติว่าเราพิจารณาเส้นจำนวนแบบอนันต์ ตำแหน่งของหินที่ i กำหนดโดยอาร์เรย์ stones และ stones[i] แสดงตำแหน่งของหินที่ i หินเป็นหินปลายถ้ามีตำแหน่งน้อยที่สุดหรือมากที่สุด ตอนนี้ในแต่ละเทิร์น เราเลือกหินปลายหนึ่งและย้ายไปตำแหน่งว่างเพื่อให้มันไม่ใช่หินปลายอีกต่อไปถ้าหินอยู่ที่ stones = [1,2,5] เราไม่สามา

  9. ลูกพี่ลูกน้องในต้นไม้ไบนารีใน C++

    สมมติว่าเรามีต้นไม้ไบนารี โหนดรากอยู่ที่ระดับ 0 และลูกของโหนดที่ระดับ k จะอยู่ที่ระดับ k+1โหนดสองโหนดในต้นไม้ไบนารีเรียกว่า ลูกพี่ลูกน้อง ถ้าพวกเขาอยู่ที่ระดับเดียวกัน แต่มีพ่อแม่วย่างคนละคนค่าทั้งหมดในต้นไม้จะไม่ซ้ำกัน และมีค่า x และ y ของโหนดสองโหนดที่ต่างกัน เราต้องตรวจสอบว่าโหนดที่ตรงกับค่า x แล

  10. ส้มเน่าใน C++

    สมมติว่าเรามีกริด แต่ละเซลล์สามารถมีค่าได้ 3 ค่า:ค่า 0 สำหรับเซลล์ว่างค่า 1 สำหรับส้มสดค่า 2 สำหรับส้มเน่าทุกนาที ส้มสดที่อยู่ติดกับส้มเน่าจะกลายเป็นส้มเน่าเราต้องหาจำนวนนาทีขั้นต่ำที่ต้องรอจนกว่าไม่จะมีเซลล์ไหนเป็นส้มสด ถ้าเป็นไปไม่ได้ ให้คืนค่า -1เช่น ถ้าอินพุตเป็น [[2,1,1],[1,1,0],[0,1,1]] ผลลัพธ

  11. พิกเซลโดด II ใน C++

    สมมติว่าเรามีภาพที่ประกอบด้วยพิกเซลสีดำและขาว เราต้องหาจำนวนพิกเซลสีดำที่อยู่ที่แถว R และคอลัมน์ C ซึ่งสอดคล้องกับกฎต่อไปนี้:แถว R และคอลัมน์ C ต้องมีพิกเซลสีดำทั้งหมด N ตัวสำหรับทุกแถวที่มีพิกเซลสีดำที่คอลัมน์ C พวกเขาต้องเหมือนกับแถว R ทุกประการภาพถูกแทนด้วยอาร์เรย์ 2D ของตัวอักษร B และ W สำหรับพิ

  12. สร้างต้นไม้ไบนารีจากสตริงใน C++

    สมมติว่าเรามีสตริงที่ประกอบด้วยวงเล็บและจำนวนเต็ม เราต้องสร้างต้นไม้ไบนารีจากสตริงนั้น อินพุตทั้งหมดแสดงถึงต้นไม้ไบนารี ซึ่งมีจำนวนเต็มตามด้วยศูนย์ หนึ่ง หรือสองคู่ของวงเล็บ จำนวนเต็มแสดงถึงค่าของราก และคู่ของวงเล็บแต่ละคู่มีต้นไม้ไบนารีลูกที่มีโครงสร้างเหมือนกันเช่น ถ้าอินพุตเป็น 4(2(3)(1))(6(5)) ผ

  13. Output Contest Matches – จับคู่ทีมแข่งขันใน C++

    ปัญหา: Output Contest Matches มีทีม n ทีม (n เป็นกำลังของ 2) เรียงอันดับ 1 ถึง n (1 = แข็งที่สุด) จับคู่รอบละ: อันดับ 1 กับ n, 2 กับ n-1, ... ผู้ชนะไปรอบต่อไป จนเหลือ 1 ทีม แสดงผลการจับคู่เป็นสตริงพร้อมวงเล็บ ตัวอย่าง n = 4 Round 1: (1,4), (2,3) → [(1,4),(2,3)] Round 2: ((1,4),(2,3)) → ((1,4),(2,3)

  14. Boundary of Binary Tree – หาขอบของต้นไม้ใน C++

    ปัญหา: Boundary of Binary Tree กำหนด Binary Tree หา ขอบ (boundary) ในทิศทาง วนทวนเข็มนาฬิกา เริ่มจากราก ประกอบด้วย 3 ส่วน (ไม่ซ้ำโหนด): Left Boundary: ราก → โหนดซ้ายสุด (ไม่รวมใบ) Leaves: ใบทั้งหมด (ซ้ายไปขวา) Right Boundary: โหนดขวาสุด → ราก (ไม่รวมใบ, เรียกทวนลำดับ) ตัวอย่าง 1 / \

  15. Split Array with Equal Sum – แบ่งอาร์เรย์ 4 ส่วนผลรวมเท่ากันใน C++

    ปัญหา: Split Array with Equal Sum กำหนดอาร์เรย์ nums หา triplet (i, j, k) ที่: 0 < i, i+1 < j, j+1 < k < n-1 ทำให้ 4 ส่วนต่อไปนี้มีผลรวมเท่ากัน: sum(0, i-1) sum(i+1, j-1) sum(j+1, k-1) sum(k+1, n-1) หมายเหตุ: ตำแหน่ง i, j, k เอง ไม่รวม ในส่วนใดส่วนหนึ่ง (เป็นตัวแบ่ง) ตัวอย่าง nums = [1,2,1,2,1,2,

  16. Binary Tree Longest Consecutive Sequence II – เส้นทางต่อเนื่องเพิ่ม/ลดใน C++

    ปัญหา: Binary Tree Longest Consecutive Sequence II หา ความยาวเส้นทางต่อเนื่อง (consecutive) ที่ยาวที่สุด ใน Binary Tree - เส้นทางเพิ่ม: 1→2→3→4 - เส้นทางลด: 4→3→2→1 - เส้นทางอาจเป็น Child-Parent-Child (ไม่จำเป็นต้อง parent-child ตรงๆ) ตัวอย่าง 2 / \ 1 3 Longest: 1→2→3 หรือ 3→2→1 → Leng

  17. Split Concatenated Strings – หาสตริงมากที่สุดจากการตัด Loop ใน C++

    ปัญหา: Split Concatenated Strings กำหนดรายการสตริง สามารถ กลับด้าน (reverse) แต่ละสตริงได้ แล้วต่อกันเป็น Loop (วงกลม) หาจุดตัด 1 จุด บน Loop → ได้สตริงปกติ หา สตริงที่มากที่สุด lexicographically ตัวอย่าง Input: [abc, xyz] Loop ตัวเลือก (4 แบบ): abcxyz → cut ได้ abcxyz, bcxyza, ..., zabcxy abczyx

  18. Longest Line of Consecutive One in Matrix – หาเส้น 1 ต่อเนื่องที่ยาวที่สุดใน C++

    ปัญหา: Longest Line of Consecutive One in Matrix กำหนด Binary Matrix M หา ความยาวเส้น 1 ต่อเนื่องที่ยาวที่สุด ทิศทาง: แนวนอน, แนวตั้ง, แนวทแยงมุม, แนวทแยงมุมตรงข้าม ตัวอย่าง Matrix: 0 1 1 0 0 1 1 0 0 0 0 1 Output: 3 (แนวตั้งคอลัมน์ 1: 1,1,1 หรือแนวนอนแถว 0: 1,1) แนวทางแก้ปัญหา: 3D Dynamic Progra

  19. Squirrel Simulation – จำลองหนูน้อยเก็บถั่วใน C++

    ปัญหา: Squirrel Simulation มีต้นไม้, หนูน้อย, และถั่วหลายเม็ด บนกริด 2D หนูน้อยขนถั่วทีละเม็ด ไปวางที่ต้นไม้ เคลื่อนที่ 4 ทิศทาง หา ระยะทางรวมน้อยที่สุด ตัวอย่าง Height=5, Width=7, Tree=[2,2], Squirrel=[4,4], Nuts=[[3,0],[2,5]] Output: 12 แนวทางแก้ปัญหา: Greedy Math ข้อสังเกตสำคัญ ถ้าหนูเริ่มจาก

  20. Kill Process – ลบกระบวนการและลูกใน C++

    ปัญหา: Kill Process มีกระบวนการ n ตัว แต่ละตัวมี PID (ID) และ PPID (Parent PID) โครงสร้างเป็น Tree (มี root เดียวที่ PPID=0) Kill PID หนึ่ง → ลูกทั้งหมดก็ตายตาม → หา รายการ PID ที่จะถูก kill ตัวอย่าง pid = [1, 3, 10, 5], ppid = [3, 0, 5, 3], kill = 5 Tree: 3 → {1, 5}, 5 → {10} Kill 5 → ตาย: [5, 10]

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:224/301  20-คอมพิวเตอร์/Page Goto:1 218 219 220 221 222 223 224 225 226 227 228 229 230