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

    คำอธิบายปัญหา ได้รับ n อาร์เรย์ ที่มีความยาวต่างกัน ต้องการเลือก ซับอาร์เรย์ (Subarray) จากแต่ละอาร์เรย์ (อาจเลือกหลายชุดจากอาร์เรย์เดียวกันได้) เพื่อให้: ความยาวรวมของซับอาร์เรย์ที่เลือก ≤ m ผลรวมของสมาชิกในซับอาร์เรย์ที่เลือกเป็นสูงสุด ตัวอย่าง Input: n = 3, m = 4 arrOfArr[][] = { {5, 2, -1, 4

  2. หาผลรวมสูงสุดโดยการนำสมาชิกทุก K ตัวในอาร์เรย์ใน C++

    คำอธิบายปัญหา ได้รับอาร์เรย์ arr[] และจำนวนเต็ม k ต้องการหา ผลรวมสูงสุด (Maximum Sum) โดยการเลือกสมาชิกที่ห่างกัน k ตำแหน่ง สูตร: sum = arr[i] + arr[i+k] + arr[i+2k] + ... + arr[i+pk] โดยที่ i + p*k < n ตัวอย่าง Input: arr[] = {5, 3, -1, 2, 4, -5, 6}, k = 4 Output: 9 คำอธิบาย: ผลรวมทุกชุดที่ห่าง k

  3. หาค่า Max ของ abs(i-j) * min(arr[i], arr[j]) ในอาร์เรย์ C++

    คำอธิบายปัญหา ได้รับอาร์เรย์ arr[] ขนาด N ต้องการหา ค่าสูงสุดของ abs(i - j) * min(arr[i], arr[j]) สำหรับคู่ดัชนี i, j ใดๆ ตัวอย่าง Input: arr[] = {5, 7, 3, 6, 4} Output: 16 คำอธิบาย: ค่าสูงสุดคือ 16 ที่ index 0 และ 4 → abs(0-4) * min(5,4) = 4 * 4 = 16 แนวทางแก้ปัญหา วิธีที่ 1: Brute Force (Two N

  4. หาค่า Max ของ Sum(i*arr[i]) ด้วยการหมุนอาร์เรย์ใน C++

    คำอธิบายปัญหา ได้รับอาร์เรย์ arr[] ขนาด n ต้องการหา ค่าสูงสุดของ Sum(i × arr[i]) โดยอนุญาตให้ หมุนอาร์เรย์ (Rotate) ได้ไม่จำกัดจำนวนครั้ง ตัวอย่าง Input: arr[] = {4, 1, 3, 7, 2} Output: 43 คำอธิบาย: หมุนอาร์เรย์ 1 ครั้ง → {2, 4, 1, 3, 7} Sum = 0×2 + 1×4 + 2×1 + 3×3 + 4×7 = 0 + 4 + 2 + 9 + 28 = 43

  5. หาค่า XOR สูงสุดกับจำนวนเต็มที่กำหนดในสตรีมข้อมูลด้วย Trie ใน C++

    คำอธิบายปัญหา ได้รับคิวรี (Queries) จำนวน Q คิวรี แต่ละคิวรีเป็นหนึ่งในสองประเภท: Type 1 (Insertion): (1, i) → เพิ่มค่า i เข้าไปในโครงสร้างข้อมูล Type 2 (Query): (2, i) → หา ค่า XOR สูงสุด ระหว่าง i กับสมาชิกทุกตัวในโครงสร้างข้อมูลปัจจุบัน โครงสร้างข้อมูลมีค่าเริ่มต้นเพียงค่าเดียวคือ 0 ตัวอย่าง

  6. หาค่า XOR สูงสุดของซับอาร์เรย์ขนาด k ใน C++

    คำอธิบายปัญหา ได้รับอาร์เรย์ arr[] ขนาด n และจำนวนเต็ม k ต้องการหา ค่า XOR สูงสุด (Maximum XOR) ของซับอาร์เรย์ทุกชุดที่มีขนาด k ตัวอย่าง Input: arr[] = {3, 1, 6, 2, 7, 9}, k = 3 Output: 12 คำอธิบาย: XOR ของซับอาร์เรย์ขนาด 3 ทุกชุด: {3, 1, 6} = 3^1^6 = 4 {1, 6, 2} = 1^6^2 = 5 {6, 2, 7} = 6^2^7 = 3

  7. หาค่าเฉลี่ยของค่าเฉลี่ยซับอาร์เรย์ในอาร์เรย์ที่กำหนดใน C++

    คำอธิบายปัญหา ได้รับอาร์เรย์ arr[] ขนาด n และจำนวนเต็ม m ต้องการหา ค่าเฉลี่ยของค่าเฉลี่ย (Mean of Means) ของซับอาร์เรย์ทุกชุดที่มีขนาด m ตัวอย่าง Input: arr[] = {2, 5, 3, 6, 1}, m = 3 Output: 3.78 คำอธิบาย: ซับอาร์เรย์ขนาด 3 มี 3 ชุด: {2, 5, 3} → mean = 10/3 {5, 3, 6} → mean = 14/3 {3, 6, 1} → me

  8. หา Median ในเมทริกซ์ที่เรียงลำดับตามแถวใน C++

    คำอธิบายปัญหา ได้รับเมทริกซ์ 2D ขนาด r x c ที่ เรียงลำดับตามแถว (Row-wise Sorted) ต้องการหา Median (ค่ามัธยฐาน) ของสมาชิกทั้งหมดในเมทริกซ์ ตัวอย่าง Input: mat = { {2, 4, 7}, {5, 6, 8}, {4, 8, 9} } Output: 6 คำอธิบาย: รวมสมาชิกทั้งหมด → {2, 4, 4, 5, 6, 7, 8, 8, 9} → Median คือ 6 (ค่ากึ่งกลางของ 9 ค

  9. หาช่วงเส้นตรงกลาง (Middle Segment) จากความยาวช่วงที่กำหนดใน C++

    คำอธิบายปัญหา ได้รับอาร์เรย์ arr[] ขนาด m ที่เก็บความยาวของช่วงเส้นตรง (Line Segments) ช่วงเส้นตรงมีดังนี้: [0, arr[0]], [arr[0], arr[0]+arr[1]], [arr[0]+arr[1], arr[0]+arr[1]+arr[2]], ... ต้องการหา ลำดับช่วง (Segment Number) ที่จุดกึ่งกลาง (Midpoint) ของเส้นตรงทั้งหมดอยู่อยู่ ตัวอย่าง Input: arr[

  10. หาความลึกน้อยที่สุดของ Binary Tree ใน C++

    คำอธิบายปัญหา ได้รับ Binary Tree (ต้นไม้แบบทวิภาค) ซึ่งแต่ละโหนดมีลูกได้สูงสุด 2 ตัว ต้องการหา ความลึกน้อยที่สุด (Minimum Depth) ของต้นไม้ นิยาม: Minimum Depth คือ เส้นทางสั้นที่สุด จากโหนดราก (Root) ไปยังโหนดใบ (Leaf Node) ใดๆ ตัวอย่าง Output: 2 แนวทางที่ 1: Recursive DFS (Depth-First Search) ใ

  11. หาค่าต่ำสุดในอาร์เรย์โดยไม่ใช้ Relational Operators ใน C++

    คำอธิบายปัญหา ได้รับอาร์เรย์ arr[] ขนาด n ที่ประกอบด้วยจำนวนบวก ต้องการหา ค่าต่ำสุด (minimum) ในอาร์เรย์ โดยห้ามใช้ Relational Operators (เช่น ==, >, <, >=, <=) ตัวอย่าง Input: arr[] = {4, 2, 5, 1, 7} Output: 1 คำอธิบาย: สมาชิกที่เล็กที่สุดคือ 1 แนวทางแก้ปัญหา แนวคิดคือการ ลดค่าทั้งสอ

  12. หาจำนวนการรวม (Merge) น้อยที่สุดเพื่อทำให้อาร์เรย์เป็นพาลินโดรมใน C++

    คำอธิบายปัญหา ได้รับอาร์เรย์ arr[] ขนาด n ที่ประกอบด้วยจำนวนบวก ต้องการหา จำนวนการดำเนินการ Merge น้อยที่สุด เพื่อทำให้อาร์เรย์กลายเป็น พาลินโดรม (Palindrome) อาร์เรย์พาลินโดรม คือ อาร์เรย์ที่สมาชิกตำแหน่ง i และ n-i-1 มีค่าเท่ากันทุกคู่ (เหมือนสตริงพาลินโดรม) การดำเนินการที่อนุญาต: มีเพียงการ Merg

  13. หาจำนวนการดำเนินการน้อยที่สุดเพื่อทำให้อาร์เรย์สวยงามใน C++

    คำอธิบายปัญหา ได้รับอาร์เรย์ไบนารี bin[] ขนาด n ที่ประกอบด้วย 0 และ 1 เท่านั้น ต้องการหา จำนวนการดำเนินการน้อยที่สุด เพื่อทำให้อาร์เรย์กลายเป็น อาร์เรย์สวยงาม (Beautiful Array) อาร์เรย์สวยงาม คือ อาร์เรย์ไบนารีที่มีรูปแบบสลับกันระหว่าง 0 และ 1 (เช่น 0,1,0,1... หรือ 1,0,1,0...) ขั้นตอนการดำเนินการห

  14. หาผลรวมหลักตัวเลขน้อยที่สุดหลังจากบวกจำนวน d ใน C++

    คำอธิบายปัญหา ในปัญหานี้ เราได้รับตัวเลขสองจำนวนคือ n และ d ภารกิจของเราคือการหา ผลรวมหลักตัวเลข (digit sum) ที่น้อยที่สุด ที่เป็นไปได้หลังจากบวกจำนวน d เข้ากับ n ซ้ำๆ (คือ บวก k × d โดยที่ k เป็นจำนวนเต็มบวก) ตัวอย่าง Input: n = 5230, d = 54 Output: 1 คำอธิบาย: ตัวเลขจะกลายเป็น 5230 + (2 × 54) =

  15. หาขนาดอาร์เรย์น้อยสุดหลังลบตามกฎด้วย C++

    ภาพรวมปัญหา ได้รับอาร์เรย์และ k ลบได้ 3 ตัวติดกันถ้า: arr[i+1]=arr[i]+k และ arr[i+2]=arr[i+1]+k (Arithmetic Progression ความต่าง k) หาขนาดน้อยสุดหลังลบซ้ำได้เรื่อยๆ ตัวอย่าง อินพุต {4, 6, 8, 4, 1, 5}, k = 2 เอาต์พุต 3 คำอธิบาย ลบ 4,6,8 (index 0,1,2) → เหลือ {4,1,5} ขนาด 3 วิธีแก้ปัญหา Dynamic Pro

  16. หาความเร็วขั้นต่ำเพื่อทำงานให้เสร็จทันเวลาด้วย C++

    ภาพรวมปัญหา ได้รับอาร์เรย์ arr[] (งานแต่ละชุด) และ H ชั่วโมง หาความเร็วขั้นต่ำ (งาน/ชั่วโมง) เพื่อทำให้เสร็จภายใน H ชั่วโมง เงื่อนไข: ถ้าทำชุดไหนเสร็จก่อน 1 ชั่วโมง ต้องรอจนครบชั่วโมง ตัวอย่าง อินพุต arr[] = {4, 5, 1, 7, 8}, H = 5 เอาต์พุต 8 คำอธิบาย ต้องทำชุดที่มากที่สุด (8) ให้เสร็จใน 1 ชั่วโมง

  17. หาจุดกระจกของจุดในระนาบ 2D ด้วย C++

    ภาพรวมปัญหา ได้รับจุด P(x,y) และเส้นกระจก ax + by + c = 0 หาจุด P ที่เป็นภาพกระจกของ P ตัวอย่าง อินพุต P = (2, 1), a = 1, b = -1, c = 0 เอาต์พุต (1, 2) วิธีแก้ปัญหา สูตรเรขาคณิต: จุดกึ่งกลาง M อยู่บนเส้นกระจก และ PP ⟂ เส้นกระจก สูตรโดยตรง: d = -2(ax + by + c) / (a² + b²) x = x + d·a y = y + d·b

  18. หา Mirror Node ใน Binary Tree ด้วย C++

    ภาพรวมปัญหา ได้รับ Binary Tree และโหนดเป้าหมาย หา Mirror Node (โหนดกระจก) ใน subtree ตรงข้าม ตัวอย่าง เอาต์พุต Mirror of 2 is 6 Mirror of 5 not present วิธีแก้ปัญหา Recursive ด้วย 2 pointers เดินพร้อมกันใน Left และ Right Subtree left pointer เดิน Left→Left, Right→Right right pointer เดิน Right→

  19. หาตัวเลขที่หายไปในช่วงที่กำหนดด้วย C++

    ภาพรวมปัญหา ได้รับอาร์เรย์ arr[] และช่วง [start, end] หาตัวเลขในช่วงที่ไม่ได้อยู่ในอาร์เรย์ ตัวอย่าง อินพุต arr[] = {4, 6, 3, 7}, start = 3, end = 8 เอาต์พุต 5, 8 วิธีแก้ปัญหา วิธีที่ 1: Sorting + Two Pointers เรียงอาร์เรย์ แล้วเดินพร้อมกับตัวเลขในช่วง วิธีที่ 2: Boolean Array - O(n + range) สร

  20. หา Modular Node ใน Linked List ด้วย C++

    ภาพรวมปัญหา ได้รับ Singly Linked List และ k หาโหนดสุดท้ายที่ index หาร k ลงตัว (i % k == 0) ตัวอย่าง อินพุต LL = 3 → 1 → 9 → 6 → 8 → 2, k = 4 เอาต์พุต 6 คำอธิบาย Index 4 คือค่า 6 (3=1, 1=2, 9=3, 6=4) วิธีแก้ปัญหา เดินผ่าน Linked List นับ index เก็บโหนดล่าสุดที่ index % k == 0 โค้ดตัวอย่าง next =

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:260/301  20-คอมพิวเตอร์/Page Goto:1 254 255 256 257 258 259 260 261 262 263 264 265 266