Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. หาจำนวนตัวคูณของ 2 หรือ 3 หรือ 5 ที่ ≤ N ด้วย C++

    ภาพรวมปัญหา ได้รับ N นับจำนวนเต็มจาก 1 ถึง N ที่หาร 2 หรือ 3 หรือ 5 ลงตัว ตัวอย่าง อินพุต N = 7 เอาต์พุต 5 คำอธิบาย 1-7: 2,3,4,5,6 หาร 2/3/5 ลงตัว (5 ตัว) วิธีแก้ปัญหา วิธีที่ 1: Brute Force - O(N) วน 1 ถึง N เช็ค mod 2,3,5 วิธีที่ 2: Inclusion-Exclusion Principle - O(1) ⭐ ใช้หลักการรวม-ตัดออก

  2. หา N % 4 ของตัวเลขขนาดใหญ่ด้วย C++

    ภาพรวมปัญหา ได้รับตัวเลขขนาดใหญ่เป็นสตริง หาเศษเมื่อหารด้วย 4 ตัวอย่าง อินพุต num = 453425245 เอาต์พุต 1 วิธีแก้ปัญหา คุณสมบัติ: เศษของการหาร 4 ขึ้นอยู่กับ 2 หลักสุดท้ายเท่านั้น เพราะ 100 หาร 4 ลงตัว → หลักร้อยขึ้นไปไม่ส่งผลต่อเศษ โค้ดตัวอย่าง #include <bits/stdc++.h> using namespace std;

  3. หาจำนวนเต็มบวก N ตัวที่สอดคล้องสมการด้วย C++

    ภาพรวมปัญหา ได้รับ A, B, N หา N จำนวนเต็มบวก x₁...xₙ ที่: x₁² + x₂² + ... + xₙ² ≥ A x₁ + x₂ + ... + xₙ ≤ B ตัวอย่าง อินพุต N = 4, A = 65, B = 16 เอาต์พุต 1 1 1 8 คำอธิบาย 1²+1²+1²+8² = 67 ≥ 65 1+1+1+8 = 11 ≤ 16 วิธีแก้ปัญหา กลยุทธ์: ทำให้ผลรวมกำลังสองมากที่สุด โดยตั้ง N-1 ตัวเป็น 1 และตัวสุดท้ายเ

  4. หาตัวที่ N ในอนุกรมใช้หลัก 4 และ 7 เท่านั้นด้วย C++

    ภาพรวมปัญหา อนุกรมใช้หลัก 4 และ 7 เท่านั้น: 4, 7, 44, 47, 74, 77, 444, 447, 474, 477, 744, ... หาตัวที่ N ตัวอย่าง อินพุต N = 4 เอาต์พุต 47 วิธีแก้ปัญหา สร้างอาร์เรย์ series[1...N]: series[1] = 4 series[2] = 7 i คี่: series[i] = series[i/2] × 10 + 4 i คู่: series[i] = series[i/2 - 1] × 10 + 7

  5. หาโหนดที่ N ใน Postorder Traversal ของ Binary Tree ด้วย C++

    ภาพรวมปัญหา ได้รับ Binary Tree และ N หาโหนดที่ N ใน Postorder Traversal (Left, Right, Root) ตัวอย่าง อินพุต N = 6 เอาต์พุต 3 คำอธิบาย Postorder: 4, 5, 2, 6, 7, 3, 1 ตัวที่ 6 = 3 วิธีแก้ปัญหา Postorder Traversal แบบ Recursive: Left → Right → Root หมายเหตุ: โค้ดต้นฉบับมีข้อผิดพลาดร้ายแรง (โค้ดคำน

  6. หาโหนดที่ N ใน Preorder Traversal ของ Binary Tree ด้วย C++

    ภาพรวมปัญหา ได้รับ Binary Tree และ N หาโหนดที่ N ใน Preorder Traversal (Root, Left, Right) ตัวอย่าง อินพุต N = 6 เอาต์พุต 6 คำอธิบาย Preorder: 1, 2, 4, 5, 3, 6, 7 ตัวที่ 6 = 6 วิธีแก้ปัญหา Preorder Traversal แบบ Recursive: เยี่ยม Root ก่อน แล้ว Left แล้ว Right โค้ดตัวอย่าง right = NULL; ret

  7. หาโหนดที่ N ใน Inorder Traversal ของ Binary Tree ด้วย C++

    ภาพรวมปัญหา ได้รับ Binary Tree และ N หาโหนดที่ N ใน Inorder Traversal (Left, Root, Right) ตัวอย่าง อินพุต N = 6 เอาต์พุต 3 คำอธิบาย Inorder: 4, 2, 5, 1, 6, 3, 7 ตัวที่ 6 = 3 วิธีแก้ปัญหา Inorder Traversal แบบ Recursive นับจำนวนโหนดที่ผ่านมา โค้ดตัวอย่าง right = NULL; return temp; } void fi

  8. หาพจน์ที่ N ของอนุกรม 1, 2, 2, 3, 3, 3, 4... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, ... เลข k ปรากฏ k ครั้งติดกัน ตัวอย่าง อินพุต N = 6 เอาต์พุต 3 วิธีแก้ปัญหา วิธีที่ 1: Nested Loop - O(√N) วิธีที่ 2: สูตรทางคณิตศาสตร์ - O(1) ⭐ ตำแหน่งสุดท้ายของเลข x คือ: 1 + 2 + ... + x = x(x+1)/2 หา x ที่ทำให้: x(x-1)/2 < N ≤

  9. หาพจน์ที่ N ของอนุกรม 7, 15, 32, 67... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 7, 15, 32, 67, 138, 281, ... ตัวอย่าง อินพุต N = 6 เอาต์พุต 281 วิธีแก้ปัญหา สังเกตรูปแบบ Recurrence: T(1) = 7 T(n) = 2·T(n-1) + (n-1) โค้ดตัวอย่าง #include <iostream> using namespace std; int findNthTerm(int n) { if (n == 1) return 7; int termN

  10. หาพจน์ที่ N ของอนุกรม 9, 33, 73, 129... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 9, 33, 73, 129, ... ตัวอย่าง อินพุต N = 4 เอาต์พุต 129 วิธีแก้ปัญหา หาความต่าง: 33-9=24, 73-33=40, 129-73=56 ความต่างรอง: 16, 16 (คงที่) เป็น Quadratic Sequence: T(N) = 8N² + 1 โค้ดตัวอย่าง #include <iostream> using namespace std; int findNthTerm(int n)

  11. หาพจน์ที่ N ของอนุกรม 1, 4, 27, 16, 125, 36... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 1, 4, 27, 16, 125, 36, 343, ... ตัวอย่าง อินพุต N = 7 เอาต์พุต 343 วิธีแก้ปัญหา แยกตาม parity ของ N: N คี่: T(N) = N³ N คู่: T(N) = N² โค้ดตัวอย่าง #include <iostream> using namespace std; int findNthTerm(int N) { if (N % 2 == 0) return N *

  12. หาพจน์ที่ N ของอนุกรม 1, 3, 6, 10, 15, 21... (Triangular Numbers) ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 1, 3, 6, 10, 15, 21, 28, ... ตัวอย่าง อินพุต N = 7 เอาต์พุต 28 วิธีแก้ปัญหา เป็น Triangular Numbers: T(N) = 1 + 2 + ... + N = N(N+1)/2 โค้ดตัวอย่าง #include <iostream> using namespace std; int findNthTerm(int N) { return N * (N + 1) / 2; } int main(

  13. หาพจน์ที่ N ของอนุกรม 2, 10, 30, 68, 130... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 2, 10, 30, 68, 130, ... ตัวอย่าง อินพุต N = 7 เอาต์พุต 350 วิธีแก้ปัญหา สังเกต: T(N) = N³ + N N=1: 1+1=2 N=2: 8+2=10 N=3: 27+3=30 N=4: 64+4=68 N=5: 125+5=130 โค้ดตัวอย่าง #include <iostream> using namespace std; int findNthTerm(int N) { return (N * N

  14. หาพจน์ที่ N ของอนุกรม 3, 9, 21, 41, 71... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 3, 9, 21, 41, 71, ... ตัวอย่าง อินพุต N = 7 เอาต์พุต 169 วิธีแก้ปัญหา สังเกต: T(N) = Σi² + Σi + 1 = n(n+1)(2n+1)/6 + n(n+1)/2 + 1 โค้ดตัวอย่าง #include <iostream> using namespace std; int findNthTerm(int n) { return (n * (n + 1) * (2 * n + 1)) / 6 +

  15. หาค่าตัวแปร N ตัวจากสมการผลรวม N สมการด้วย C++

    ภาพรวมปัญหา ได้รับอาร์เรย์ sum[] โดยที่ sum[i] = ผลรวมของตัวแปรทั้งหมด ยกเว้น xᵢ sum[1] = x₂ + x₃ + ... + xₙ sum[2] = x₁ + x₃ + ... + xₙ ... sum[n] = x₁ + x₂ + ... + xₙ₋₁ หาค่า x₁, x₂, ..., xₙ ตัวอย่าง อินพุต sum[] = {6, 6, 6, 6, 6, 6, 6} เอาต์พุต x1 = 1, x2 = 1, x3 = 1, x4 = 1, x5 = 1, x6 = 1, x7

  16. หาตัวที่ N ในเซตผลรวมของสองอาร์เรย์ด้วย C++

    ภาพรวมปัญหา ได้รับอาร์เรย์ arr1[], arr2[] ที่เรียงแล้ว ขนาด m หาตัวที่ N ในเซตของผลรวม arr1[i] + arr2[j] ตัวอย่าง อินพุต arr1[] = {3, 1, 5}, arr2[] = {6, 2, 8}, N = 4 เอาต์พุต 7 คำอธิบาย ผลรวมที่เป็นไปได้ (unique): 3, 5, 7, 9, 11, 13 ตัวที่ 4 = 7 วิธีแก้ปัญหา ใช้ Set เก็บผลรวมทั้งหมด (auto unique

  17. หาตัวเลขตัวที่ N ในระบบเลขฐาน 3 และ 4 ด้วย C++

    ภาพรวมปัญหา ระบบเลขที่ใช้ได้แค่ 3 และ 4: 3, 4, 33, 34, 43, 44, 333, 334, 343, 344, ... หาตัวเลขตัวที่ N ตัวอย่าง อินพุต N = 6 เอาต์พุต 44 วิธีแก้ปัญหา คล้าย Binary แต่มัป 0→3, 1→4 ตัวที่ N = (N-1) ในระบบ S-Binary (3/4 Binary) โค้ดตัวอย่าง (Recursive) #include <iostream> using namespace std

  18. หาตัวเลขมากกว่าที่มีหลักเดียวกันด้วย C++

    ภาพรวมปัญหา ได้รับตัวเลข N (เป็นสตริง) หาตัวเลขที่มากกว่า N น้อยที่สุดที่ใช้หลักตัวเลขชุดเดียวกัน ตัวอย่าง อินพุต N = 92534 เอาต์พุต 92543 วิธีแก้ปัญหา (Next Permutation) สแกนจากขวาไปซ้าย หา index i ที่ arr[i] < arr[i+1] (จุดที่เริ่มลดลง) arr[i] (ตัวที่มากกว่า arr[i] น้อยที่สุด) Swap arr[i] และ

  19. หา Palindrome Prime ถัดไปด้วย C++

    ภาพรวมปัญหา N Palindrome: อ่านจากซ้าย-ขวาและขวา-ซ้ายได้เหมือนกัน (เช่น 101, 131) Prime: มีตัวหารแค่ 1 และตัวมันเอง ตัวอย่าง อินพุต N = 12 เอาต์พุต 101 คำอธิบาย 12: 22, 33, 44, 55, 66, 77, 88, 99, 101... Prime ในบรรดานี้: 101 วิธีแก้ปัญหา ข้อสังเกตสำคัญ: Palindrome ที่มีหลักคู่ (ยกเว้น 11) หาร

  20. หาโหนดขวาถัดไปของคีย์ใน Binary Tree ด้วย C++

    ภาพรวมปัญหา ได้รับ Binary Tree และคีย์ (key) ต้องหาโหนดที่อยู่ข้างขวาถัดไปในระดับเดียวกัน (Level Order) ตัวอย่าง อินพุต key = 4 เอาต์พุต 5 คำอธิบาย โหนดข้างขวาของ 4 ในระดับเดียวกันคือ 5 วิธีแก้ปัญหา ใช้ Level Order Traversal (BFS) พร้อมเก็บระดับของแต่ละโหนด Enqueue root พร้อม level = 0 Dequeue

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