Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. หาผลรวม Series 1 + 22 + 333 + 4444 + ... จน N พจน์ใน C++

    ในปัญหานี้ เราได้รับ N งานคือหาผลรวม Series: 1 + 22 + 333 + 4444 + ... จน N พจน์ ตัวอย่าง Input: N = 4 Output: 4800 1 + 22 + 333 + 4444 = 4800 การ導出สูตร (Mathematical Derivation) พจน์ที่ k = k × (111...1 k ตัว) = k × (10ᵏ - 1)/9 Sum = Σ[k×(10ᵏ-1)/9] = 1/9 × [Σ(k×10ᵏ) - Σ(k)] หลังจัดรูปได้สูตรปิด:

  2. หาการจัดคิวหลังเวลา T ในปัญหา M/F Queue ใน C++

    ในปัญหานี้ เราได้รับ string ของ M (Male) และ F (Female) และเวลา T ผู้ชายจะสลับตำแหน่งกับผู้หญิงที่อยู่ด้านหลังทุก 1 หน่วยเวลา ตัวอย่าง Input: queue = MFMMFF, t = 3 Output: FFMFMM T=0: MFMMFF → T=1: FMMFMF → T=2: FMFMFM → T=3: FFMFMM วิธีการแก้ปัญหา: Simulation O(N×T) วน T รอบ, แต่ละรอบสแกนซ้ายไปขว

  3. หาค่าเฉลี่ยของ N จำนวนธรรมชาติแรกใน C++

    ในปัญหานี้ เราได้รับ N งานคือหา ค่าเฉลี่ย (Average) ของจำนวนธรรมชาติ 1 ถึง N ตัวอย่าง Input: N = 23 Output: 12 Sum = 1+2+...+23 = 276, Average = 276/23 = 12 สูตรทางคณิตศาสตร์ Sum of first N natural numbers = N(N+1)/2 Average = Sum / N = (N+1)/2 ตัวอย่างโค้ด #include <iostream> using namespa

  4. หา Deepest Node ใน Binary Tree ใน C++ (2 วิธี)

    ในปัญหานี้ เราได้รับ Binary Tree งานคือหา Deepest Node (node ที่อยู่ระดับลึกที่สุด) ตัวอย่าง Output: 8 วิธีที่ 1: Inorder Traversal + Level Tracking O(N) Recursive traversal เก็บ maxLevel และ deepestNode right, level + 1, maxLevel, deepest); } int findDeepest(Node* root) { int maxLevel = -1,

  5. หาขนาดของสามเหลี่ยมมุมฉากจาก Hypotenuse และ Area ใน C++

    ในปัญหานี้ เราได้รับ Hypotenuse (H) และ Area (A) ของสามเหลี่ยมมุมฉาก งานคือหาฐาน (base) และสูง (height) สูตรทางคณิตศาสตร์ ให้ b = base, h = height (perpendicular) Area: A = ½ × b × h → b×h = 2A Pythagoras: H² = b² + h² แก้สมการระบบ: (b + h)² = b² + h² + 2bh = H² + 4A (b - h)² = b² + h² - 2bh = H²

  6. หาคำที่มีความยาวมากที่สุดและเป็นเลขคู่ใน String ใน C++

    ในปัญหานี้ เราได้รับ string งานคือหา คำ (word) แรกที่มีความยาวมากที่สุดและเป็นเลขคู่ ตัวอย่าง Input: learn programming at TutorialsPoint Output: TutorialsPoint TutorialsPoint = 14 ตัวอักษร (คู่) และยาวที่สุด วิธีการแก้ปัญหา: Single Pass O(N) Traverse string ตัวอักษรทีละตัว นับความยาวคำปัจจุบัน (c

  7. หาคำแรกที่ซ้ำใน String ใน C++

    ในปัญหานี้ เราได้รับ string ที่มีคั่นด้วยช่องว่าง งานคือหา คำ (word) แรกที่ซ้ำ ตัวอย่าง Input: C program are easy to program Output: program วิธีการแก้ปัญหา: Hash Map (unordered_map) Split string เป็นคำๆ (ใช้ stringstream) นับ frequency ของแต่ละคำใน hash map 1 ตัวอย่างโค้ด #include <bits/st

  8. หา Element แรกที่ซ้ำใน Array ของ Integer ใน C++

    ในปัญหานี้ เราได้รับ array arr[] ขนาด n งานคือหา element แรกที่เกิดซ้ำ (first repeating element) ตัวอย่าง Input: arr[] = {4, 1, 8, 9, 7, 2, 1, 6, 4} Output: 4 4 และ 1 ซ้ำทั้งคู่ แต่ 4 ปรากฏก่อน (index 0 vs index 1) วิธีที่ 1: Nested Loop O(N²) - ช้า วิธีที่ 2: Hash Set + Reverse Traversal O(N) (แ

  9. หา Good Permutation ของ N จำนวนธรรมชาติแรกใน C++

    ในปัญหานี้ เราได้รับ N งานคือหา Good Permutation ของ 1..N Good Permutation Definition Permutation P ที่สำหรับทุก i (1 ≤ i ≤ N): P[i] ≠ i (ไม่มี fixed point = Derangement) P[P[i]] = i (เป็น Involution: swap แบบคู่) เงื่อนไขและวิธีสร้าง ถ้า N คี่ → ไม่มีคำตอบ (Output: -1) ถ้า N คู่ → สลับคู่ๆ: (2

  10. หาด้านตรงข้ามมุมฉาก (Hypotenuse) ของสามเหลี่ยมมุมฉากใน C++

    ในปัญหานี้ เราได้รับฐาน (B) และสูง (H) ของสามเหลี่ยมมุมฉาก งานคือหาด้านตรงข้ามมุมฉาก ทฤษฎีบทพีทาโกรัส H² = B² + H² (ในที่นี้ H = hypotenuse, B = base, h = height) Hypotenuse = √(base² + height²) ตัวอย่าง Input: B = 5, H = 12 Output: 13.00 √(5² + 12²) = √(25 + 144) = √169 = 13 ตัวอย่างโค้ด #includ

  11. หา Index ของ 1 แรกใน Sorted Array ของ 0 และ 1 ใน C++

    ในปัญหานี้ เราได้รับ sorted array ของ 0 และ 1 (ขนาดจำกัด) งานคือหา index ของ 1 ตัวแรก ตัวอย่าง Input: bin[] = {0, 0, 0, 1, 1} Output: 3 วิธีที่ 1: Linear Search O(N) int findFirstOneLinear(int bin[], int n) { for (int i = 0; i < n; i++) if (bin[i] == 1) return i; return -1; } วิธีที่ 2: B

  12. หา Index ของ 1 แรกใน Infinite Sorted Array ของ 0 และ 1 ใน C++

    ในปัญหานี้ เราได้รับ Infinite sorted array ของ 0 และ 1 (มี 1 อย่างน้อย 1 ตัว) งานคือหา index ของ 1 ตัวแรก ตัวอย่าง Input: bin[] = {0, 0, 0, 1, 1, ...} Output: 3 วิธีที่ 1: Linear Search O(Index) - ไม่เหมาะกับ Infinite Array int findFirstOneLinear(int bin[]) { for (int i = 0; ; i++) if (bin[i]

  13. หา Index ของ Left Pointer หลังเลื่อนตามเงื่อนไขใน Array ใน C++

    ในปัญหานี้ เราได้รับ array arr[] งานคือหาตำแหน่งของ left pointer หลังเลื่อนตามกฎ: Left pointer เริ่ม index 0, Right pointer เริ่ม index n-1 Left sum = arr[0], Right sum = arr[n-1] ถ้า Left sum < Right sum → Left++ และบวก arr[left] เข้า left sum Right sum → Right-- และบวก arr[right] เข้า right sum

  14. หา Initial Array จาก Range Sum Queries ใน C++

    ในปัญหานี้ เราได้รับ array ผลลัพธ์ res[] และ queries [s, e, val] งานคือหา initial array ก่อนทำ query Query Operation แต่ละ query [s, e, val] เพิ่ม val ให้ทุก element index s ถึง e ตัวอย่าง Input: res[] = {7, 4, 8}, Queries = {{1, 2, 1}, {0, 1, 3}} Output: {4, 0, 7} Initial: {4, 0, 7} → Query {1,2,

  15. หา K ตัวเลขมากที่สุดหลังลบ Element ที่กำหนดใน C++

    ในปัญหานี้ เราได้รับ arr[], del[], และ K งานคือหา K ตัวเลขมากที่สุดใน arr หลังลบ element ที่อยู่ใน del ตัวอย่าง Input: arr[] = {3, 5, 1, 7, 9, 2}, del[] = {1, 9, 3}, k = 2 Output: 7, 5 หลังลบ: {5, 7, 2} → 2 largest: 7, 5 วิธีที่ 1: Brute Force + Sort Descending O(N log N) วิธีที่ 2: Hash Map + Ma

  16. หา K ตัวเลขน้อยที่สุดหลังลบ Element ที่กำหนดใน C++

    ในปัญหานี้ เราได้รับ arr[], del[], และ K งานคือหา K ตัวเลขน้อยที่สุดใน arr หลังลบ element ที่อยู่ใน del ตัวอย่าง Input: arr[] = {3, 5, 1, 7, 9, 2}, del[] = {1, 9, 3}, k = 2 Output: 2, 5 หลังลบ: {5, 7, 2} → 2 smallest: 2, 5 วิธีที่ 1: Brute Force + Sort O(N log N) ลบ element (mark INT_MAX) → sort →

  17. หา K-th Smallest Divisor ของ N ใน C++

    ในปัญหานี้ เราได้รับ N และ K งานคือหา K-th smallest divisor (ตัวหาร) ของ N ตัวอย่าง Input: N = 15, k = 3 Output: 5 Divisors of 15: 1, 3, 5, 15 → 3rd = 5 วิธีที่ 1: หาตัวหารทั้งหมด + Sort O(√N log N) วน i = 1 ถึง √N ถ้า N % i == 0 เก็บ i และ N/i → sort → หา k-th วิธีที่ 2: Two Sorted Arrays O(√N)

  18. หา K-th Element ใน Series จาก N ช่วง (Ranges) ใน C++

    ในปัญหานี้ เราได้รับ N ช่วง [L, R] และค่า K งานคือหา K-th element ใน series ที่รวมตัวเลขทุกช่วงเข้าด้วยกัน (เรียงเลขไม่ซ้ำ) ตัวอย่าง Input: ranges = {{1, 3}, {5, 7}}, k = 4 Output: 5 Series: {1, 2, 3, 5, 6, 7} → 4th = 5 วิธีที่ 1: สร้าง Array โดยตรง (ใช้หน่วยความจำมาก) รวมทุกตัวเลขในช่วงเข้า array

  19. หา K-th Node ใน DFS Traversal ของ Subtree ใน Tree ใน C++

    ในปัญหานี้ เราได้รับ Tree ขนาด N, Node V, และ K งานคือหา K-th node ใน DFS traversal ของ subtree ที่ rooted ที่ V ตัวอย่าง V = 2, k = 3 (1-indexed) Output: 4 DFS from 2: {2, 3, 5, 6, 7} → 3rd = 5 (โค้ดตัวอย่างใช้ 0-indexed ให้ 4) วิธีการแก้ปัญหา: Pre-compute DFS Order DFS ทั้ง tree บันทึกลำดับใน

  20. หาค่ามากที่สุดใน Array หลังลบ Element ที่กำหนดใน C++

    ในปัญหานี้ เราได้รับ array arr[] ขนาด n และ array del[] ขนาด m งานคือหาค่ามากที่สุดใน arr หลังลบ element ที่อยู่ใน del (ถ้ามีซ้ำ ลบแค่ตัวแรก) ตัวอย่าง Input: arr[] = {3, 5, 1, 7, 9, 2}, del[] = {1, 9, 3} Output: 7 หลังลบ: {5, 7, 2} → Max = 7 วิธีที่ 1: Brute Force + Sort O(N log N) ลบ element (mar

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:284/301  20-คอมพิวเตอร์/Page Goto:1 278 279 280 281 282 283 284 285 286 287 288 289 290