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

    สมมติว่าเรามีรายการสตริงชื่อ genes โดยแต่ละอิลิเมนต์มีความยาวเท่ากันและประกอบด้วยตัวอักษร A, C, G และ/หรือ T มีกฎดังนี้: เมื่อสตริงสองตัว s1 และ s2 เหมือนกันทุกตัวอักษรยกเว้นหนึ่งตัว s1 และ s2 อยู่ในกลุ่มกลายพันธุ์เดียวกัน เมื่อ s1 และ s2 อยู่ในกลุ่มเดียวกัน และ s2 และ s3 อยู่ในกลุ่มเดียวกัน แล้ว

  2. โปรแกรมตรวจสอบว่าต้นไม้เป็น Height Balanced หรือไม่ใน C++

    สมมติว่าเรามีต้นไม้ไบนารี เราต้องตรวจสอบว่าความสูงของมันสมดุล (height balanced) หรือไม่ ต้นไม้สมดุลความสูงหมายถึง สำหรับทุกโหนด ความต่างสัมบูรณ์ของความสูงของซับทรีซ้ายและขวาต้องเป็น 0 หรือ 1 เช่น ต้นไม้ที่มีโครงสร้างดังภาพ ผลลัพธ์จะเป็น True ขั้นตอนการแก้ปัญหา สร้างฟังก์ชัน dfs(node) ที่คืนค่าความ

  3. โปรแกรมหาลำดับ 1 ติดต่อกันที่ยาวที่สุดในรูปแบบไบนารีของตัวเลขใน C++

    สมมติว่าเรามีตัวเลข n เราต้องหาความยาวของลำดับ 1 ติดต่อกันที่ยาวที่สุดในตัวแทนแบบไบนารีของมัน เช่น หากอินพุตคือ n = 312 ผลลัพธ์จะเป็น 3 เนื่องจาก 312 ในไบนารีคือ 100111000 ซึ่งมี 1 ติดต่อกัน 3 ตัว ขั้นตอนการแก้ปัญหา กำหนด ret = 0, len = 0 วนลูป i จาก 0 ถึง 31 (สำหรับ integer 32-bit): ถ้า bit ที่

  4. โปรแกรมหามุมมองด้านซ้ายของต้นไม้ไบนารีใน C++

    สมมติว่าเรามีต้นไม้ไบนารี หากมองจากด้านซ้าย เราจะเห็นโหนดบางส่วน เราต้องแสดงโหนดเหล่านั้นออกมา เช่น ต้นไม้ที่มีโครงสร้างดังภาพ ผลลัพธ์จะเป็น [1, 2, 5] ขั้นตอนการแก้ปัญหา สร้างอาร์เรย์ ret เก็บผลลัพธ์ สร้างฟังก์ชัน dfs(node, level) โดย level เริ่มจาก 1: ถ้า node เป็น null: return lvl (ระดับสูงสุด

  5. โปรแกรมทำ Level Order Traversal ของต้นไม้ไบนารีใน C++

    สมมติว่าเรามีต้นไม้ไบนารี เราต้องท่องต้นไม้นี้แบบ Level Order Traversal (ท่องทีละระดับจากบนลงล่าง ซ้ายไปขวา) เช่น ต้นไม้ที่มีโครงสร้างดังภาพ ลำดับการท่องจะเป็น [1, 2, 3, 5, 4] ขั้นตอนการแก้ปัญหา สร้างคิว (queue) เก็บโหนด ใส่รูทเข้าไปในคิว วนลูปจนคิวว่าง: นำโหนดหน้าคิวออก (front) พิมพ์/เก็บค่าของโ

  6. โปรแกรมหาระดับของต้นไม้ที่มีผลรวมน้อยที่สุดใน C++

    สมมติว่าเรามีต้นไม้ไบนารี ระดับของรูทคือ 1 ระดับของลูกคือ 2 และเพิ่มขึ้นไปเรื่อยๆ เราต้องหาระดับ X ที่เล็กที่สุดที่ทำให้ผลรวมของค่าโหนดทั้งหมดในระดับ X นั้นน้อยที่สุด เช่น ต้นไม้ที่มีโครงสร้างดังภาพ ผลลัพธ์จะเป็น 2 เนื่องจากผลรวมระดับ 2 คือ 4 + (-10) = -6 ซึ่งน้อยที่สุด ขั้นตอนการแก้ปัญหา เริ่มต้น

  7. โปรแกรมตรวจสอบว่ารายการสามารถแบ่งเป็นสับลิสต์ที่มี k องค์ประกอบเพิ่มขึ้นติดต่อกันได้หรือไม่ใน C++

    สมมติว่าเรามีรายการตัวเลข nums และตัวเลข k เราต้องตรวจสอบว่าสามารถแบ่งรายการนี้ออกเป็นสับลิสต์ได้หรือไม่ โดยแต่ละสับลิสต์มี k ค่า และค่าเหล่านั้นเพิ่มขึ้นติดต่อกัน เช่น หากอินพุตคือ nums = [4, 3, 2, 4, 5, 6], k = 3 ผลลัพธ์จะเป็น True เนื่องจากสามารถแบ่งได้เป็น [2, 3, 4] และ [4, 5, 6] ขั้นตอนการแก้ป

  8. โปรแกรมหาความยาวของลำดับย่อยบิทอนิกที่ยาวที่สุดใน C++

    สมมติว่าเรามีรายการตัวเลข เราต้องการหาความยาวของลำดับย่อยบิทอนิก (Bitonic Subsequence) ที่ยาวที่สุด ลำดับบิทอนิกคือลำดับที่เพิ่มขึ้นอย่างเคร่งครัด (strictly increasing) แล้วตามด้วยการลดลงอย่างเคร่งครัด (strictly decreasing) ลำดับที่เพิ่มขึ้นอย่างเดียวหรือลดลงอย่างเดียวก็ถือเป็นบิทอนิกเช่นกัน เช่น ห

  9. โปรแกรมหาความยาวของลำดับย่อยร่วมที่ยาวที่สุดใน C++

    สมมติว่าเรามีสตริงสองตัวคือ text1 และ text2 เราต้องการหาความยาวของลำดับย่อยร่วมที่ยาวที่สุด (Longest Common Subsequence - LCS) ลำดับย่อยคือลำดับที่สร้างจากสตริงต้นฉบับโดยการลบตัวอักษรบางส่วนออกไปโดยไม่เปลี่ยนลำดับของตัวอักษรที่เหลือ (เช่น abe เป็นลำดับย่อยของ abcde แต่ adc ไม่ใช่) ลำดับย่อยร่วมคือล

  10. โปรแกรมหาความยาวของสตริงย่อยร่วมที่ยาวที่สุดใน C++

    สมมติว่าเรามีสตริงตัวพิมพ์เล็กสองตัวคือ X และ Y เราต้องการหาความยาวของสตริงย่อยร่วมที่ยาวที่สุดของทั้งสอง เช่น หากอินพุตคือ X = helloworld, Y = worldbook ผลลัพธ์จะเป็น 5 เนื่องจาก world เป็นสตริงย่อยร่วมที่ยาวที่สุดและมีความยาว 5 ขั้นตอนการแก้ปัญหา สร้างอาร์เรย์ longest ขนาด (m+1) x (n+1) กำหนด le

  11. โปรแกรมรวมต้นไม้ไบนารีสองต้นใน C++

    ภาพรวมปัญหา ให้ต้นไม้ไบนารีสองต้น ต้องการรวม (merge) เป็นต้นไม้เดียว กฎ: โหนดทับกัน → บวกค่า, โหนดไม่ทับกัน → นำมาใช้ต่อ ตัวอย่าง Tree 1: Tree 2: Merged: 1 2 3 / \ / \ / \ 3 2 1 3 4 5 / \

  12. โปรแกรมนับจำนวนกำลังสองน้อยที่สุดที่รวมกันได้ N ใน C++

    ภาพรวมปัญหา ให้จำนวนเต็มบวก n ต้องการหาจำนวนกำลังสองน้อยที่สุดที่รวมกันได้ n (Perfect Squares Sum) ตัวอย่าง Input: n = 10 Output: 2 คำอธิบาย: 10 = 9 + 1 = 3² + 1² ทฤษฎีทางคณิตศาสตร์ (Lagranges Four Square Theorem) ทุกจำนวนเต็มบวกสามารถเขียนเป็นผลรวมของกำลังสองได้ไม่เกิน 4 ตัว คำตอบจะเป็น 1, 2, 3,

  13. โปรแกรมคำนวณนิพจน์ Postfix (Reverse Polish Notation) ใน C++

    ภาพรวมปัญหา ให้นิพจน์ Postfix (ตัวดำเนินการอยู่หลังตัวถูกดำเนินการ) ต้องการคำนวณค่า เช่น 21+3* = (2+1)×3 = 9 หลักการทำงาน (Stack-based) อ่านตัวอักษรทีละตัวจากซ้ายไปขวา ถ้าเป็นตัวเลข (operand) → push เข้า stack ถ้าเป็นตัวดำเนินการ (operator) → pop 2 ตัว (a=top, b=next), คำนวณ b op a, push ผลล

  14. โปรแกรมหาจำนวนช่วงที่ต้องลบเพื่อไม่ให้ทับซ้อนใน C++

    ภาพรวมปัญหา ให้ชุดช่วง (intervals) ต้องการหาจำนวนช่วงน้อยที่สุดที่ต้องลบ เพื่อให้ช่วงที่เหลือไม่ทับซ้อนกัน ตัวอย่าง Input: [[8,10], [3,5], [6,9]] Output: 1 คำอธิบาย: ลบ [6,9] เหลือ [3,5] และ [8,10] ไม่ทับซ้อน แนวทางแก้ปัญหา (Greedy - Interval Scheduling) เทียบเท่ากับ: หา จำนวนช่วงสูงสุดที่ไม่ทับซ้

  15. โปรแกรมลบ sublist เพื่อให้จำนวนน้อยกว่าและมากกว่า k เท่ากันใน C++

    ภาพรวมปัญหา ให้อาร์เรย์ nums และจำนวน k สามารถลบ sublist (ช่วงติดต่อกัน) ได้สูงสุด 1 ครั้ง ต้องการความยาวสูงสุดของอาร์เรย์ที่เหลือ ที่ทำให้จำนวนน้อยกว่า k เท่ากับจำนวนมากกว่า k ตัวอย่าง Input: nums = [6, 10, 8, 9, 3, 5], k = 6 Output: 5 คำอธิบาย: ลบ [9] ได้ [6,10,8,3,5] → น้อยกว่า 6: {3,5} (2 ตัว),

  16. โปรแกรมหากำไรสูงสุดจากการตัดแท่งไม้ใน C++ (Rod Cutting Problem)

    ภาพรวมปัญหา ให้แท่งไม้ยาว n และราคาของแต่ละความยาว (price[i] = ราคาความยาว i+1) ต้องการหากำไรสูงสุดจากการตัดแท่งไม้ขาย ตัวอย่าง Input: prices = [1, 5, 8, 9, 10, 17, 17, 20], n = 8 Output: 22 คำอธิบาย: ตัดเป็น 2 + 6 → ราคา 5 + 17 = 22 แนวทางแก้ปัญหา (Dynamic Programming) นี่คือปัญหา Rod Cutting Pro

  17. โปรแกรมหมุน Linked List ไปขวา k ตำแหน่งใน C++

    ภาพรวมปัญหา ให้ Linked List และจำนวน k ต้องการหมุน linked list ไปทางขวา k ตำแหน่ง ตัวอย่าง Input: 1→2→3→4→5→NULL, k=2 Output: 4→5→1→2→3→NULL แนวทางแก้ปัญหา หาความยาว len และ tail node เชื่อม tail→next = head (ทำให้เป็น circular) k = k % len (ลด k ให้อยู่ในช่วง) เดินจาก head ไป len-k-1 ste

  18. โปรแกรมกลับลำดับคำในประโยคที่เก็บเป็น character array ใน C++

    ภาพรวมปัญหา ให้ประโยคเก็บเป็น vector<char> (แต่ละตัวอักษรและ space แยกกัน) ต้องการกลับลำดับคำในประโยค ตัวอย่าง Input: {t,h,e, ,m,a,n, ,i,s, ,n,i,c,e} Output: {n,i,c,e, ,i,s, ,m,a,n, ,t,h,e} คำแปล: the man is nice → nice is man the แนวทางแก้ปัญหา (Two-Pass Reverse) Reverse ทั้ง array → eci

  19. โปรแกรมคูณสตริงสองตัวและคืนผลลัพธ์เป็นสตริงใน C++

    ภาพรวมปัญหา ให้ตัวเลขสองตัวในรูปแบบสตริง ต้องการคูณกันและคืนผลลัพธ์เป็นสตริง (รองรับตัวเลขใหญ่เกิน range ของ built-in types) ตัวอย่าง Input: 28, 25 Output: 700 แนวทางแก้ปัญหา (Grade School Multiplication) ผลคูณของตัวเลข m หลักและ n หลัก มีได้มากสุด m+n หลัก สร้าง array ans[m+n] เริ่มต้น 0 ค

  20. โปรแกรมตรวจสอบว่า string เป็น subsequence ของอีก string ใน C++

    ภาพรวมปัญหา ให้สตริง S และ T ต้องการตรวจสอบว่า S เป็น subsequence ของ T หรือไม่ (ตัวอักษรของ S ปรากฏใน T ตามลำดับ แต่ไม่จำเป็นต้องติดกัน) ตัวอย่าง Input: S = abc, T = adbrcyxd Output: true (1) คำอธิบาย: a (index 0), b (index 2), c (index 5) ใน T แนวทางแก้ปัญหา (Two Pointers) Pointer i สำหรับ S,

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