Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. ตรวจสอบ Linked List ว่าเป็น Circular Linked List ใน C++

    Circular Linked List คืออะไร? Linked List ที่โหนดสุดท้ายชี้กลับไปที่ head (หรือโหนดแรก) ทำให้เป็นวงกลม ไม่มี NULL ที่ปลาย วิธีตรวจสอบ เก็บ pointer head ไว้ next ท่องต่อไป ถ้าเจอ NULL → ไม่ใช่ Circular ถ้าเจอ head อีกครั้ง → เป็น Circular ตัวอย่างโค้ด C++ next = getNode(3); if (isCircula

  2. ตรวจสอบ Linked List ว่าเป็น Pairwise Sorted ใน C++

    Pairwise Sorted คืออะไร? Linked List ถือว่า Pairwise Sorted หากทุกคู่ที่อยู่ติดกัน (index 0-1, 2-3, 4-5, ...) มีลำดับจากน้อยไปมาก ตัวอย่าง: [8, 10, 18, 20, 5, 15] → คู่: (8,10)✓, (18,20)✓, (5,15)✓ → Pairwise Sorted ถ้าจำนวนโหนดคี่ โหนดสุดท้ายไม่นับ อัลกอริทึม ท่อง Linked List ทีละคู่ (กระโดด 2 โหน

  3. ตรวจสอบจำนวน Unusual ใน C++

    จำนวน Unusual (Unusual Number) คืออะไร? จำนวน n ที่ ตัวหารเฉพาะมากที่สุด (largest prime factor) มากกว่า √n √n ตัวอย่าง n = 14 ตัวหารเฉพาะ: 2, 7 มากที่สุด = 7 √14 ≈ 3.74 3.74 → เป็น Unusual Number ✓ n = 12 ตัวหารเฉพาะ: 2, 3 มากที่สุด = 3 √12 ≈ 3.46 3 < 3.46 → ไม่ใช่ Unusual ✗ Unusual Numbers

  4. ตรวจสอบจำนวน Bleak ใน C++

    จำนวน Bleak (Bleak Number) คืออะไร? จำนวน n ที่ ไม่สามารถเขียนในรูป x + countSetBits(x) ได้ สำหรับ x ≥ 1 ใดๆ โดย countSetBits(x) = จำนวนบิต 1 ในการแสดงไบนารีของ x ตัวอย่าง n = 3: x=1 → 1+1=2, x=2 → 2+1=3 ✓ พบ → ไม่ใช่ Bleak n = 4: x=1→2, x=2→3, x=3→3+2=5 ไม่มี x ให้ 4 → เป็น Bleak อัลกอริทึม ตรว

  5. ตรวจสอบตัวเลขหารด้วยตัวหารเฉพาะของอีกตัวได้หมดใน C++

    ปัญหา ให้ตัวเลข a และ b ตรวจสอบว่า a หารด้วยตัวหารเฉพาะ (prime factors) ของ b ลงตัวหมดหรือไม่ ตัวอย่าง: a=120, b=75 Prime factors ของ 120: 2, 3, 5 Prime factors ของ 75: 3, 5 120 หาร 3 และ 5 ลงตัว → Yes ข้อสังเกตสำคัญ a หารตัวหารเฉพาะของ b ลงตัวหมด ⟺ ทุกตัวหารเฉพาะของ b ก็เป็นตัวหารของ a ⟺ gcd(a,

  6. ตรวจสอบคู่ที่ให้ผลคูณเท่ากับ K ในเมทริกซ์ C++

    ปัญหา ให้เมทริกซ์ N×M และค่า K ตรวจสอบว่ามีคู่ของสมาชิกในเมทริกซ์ที่ให้ผลคูณเท่ากับ K หรือไม่ ตัวอย่าง: เมทริกซ์ 4×4 มีค่า 1-16, K=42 → คู่ (6, 7) ให้ 6×7=42 วิธีแก้ปัญหา: Hashing คล้าย Linked List แต่วนทุกเซลล์ในเมทริกซ์: สร้าง unordered_set เก็บค่าที่เจอแล้ว วน i=0..N-1, j=0..M-1: val = m

  7. ตรวจสอบคู่ที่ให้ผลคูณเท่ากับ K ใน Linked List C++

    ปัญหา ให้ Linked List และค่า K ตรวจสอบว่ามีคู่ของโหนด (x, y) ที่ x × y = K หรือไม่ ตัวอย่าง: List = {2, 4, 8, 12, 15}, K = 16 → คู่ (2, 8) วิธีแก้ปัญหา: Hashing สร้าง Hash Set (unordered_set) เก็บค่าที่ผ่านมาแล้ว ท่อง Linked List ทีละโหนด: ค่าปัจจุบัน = curr ถ้า K % curr == 0 และ (K/curr

  8. อัลกอริทึม Minimax พร้อม Alpha-Beta Pruning ใน C++

    Minimax Algorithm อัลกอริทึมสำหรับ Game Theory (เช่น หมากรุก, Tic-Tac-Toe) ผู้เล่นสองฝ่าย: Maximizer: พยายามทำคะแนนสูงสุด Minimizer: พยายามทำคะแนนต่ำสุด Alpha-Beta Pruning เทคนิคตัดกิ่ง (pruning) เพื่อลดการค้นหา: Alpha (α): ค่าที่ Maximizer รับประกันได้แล้ว (lower bound) Beta (β): ค่าที่ Minimiz

  9. ลดผลรวมกำลังสองของคู่ที่จับคู่จาก N ตัวเลขใน C++

    ปัญหา ให้อาร์เรย์ n ตัวเลข (n เป็นเลขคู่) จับคู่เป็น n/2 คู่ ให้ผลรวมของกำลังสองของผลรวมแต่ละคู่น้อยที่สุด Minimize: Σ (xᵢ + yᵢ)² สำหรับ n/2 คู่ ตัวอย่าง arr = [5, 10, 7, 4] คู่ที่เป็นไปได้: (5,10) และ (7,4): 15² + 11² = 225 + 121 = 346 (5,7) และ (10,4): 12² + 14² = 144 + 196 = 340 ← น้อยที่สุด (5

  10. ลดจำนวนหมีพูห์ที่แจกให้นักเรียนให้น้อยที่สุดใน C++

    ปัญหา มีนักเรียน N คน มีคะแนนสอบในอาร์เรย์ แจกหมีพูห์ตามกติกา: ทุกคนต้องได้อย่างน้อย 1 ตัว ถ้าคนข้างเคียงมีคะแนนมากกว่า ต้องได้หมีพูห์มากกว่า ถ้าคะแนนเท่ากัน อาจได้ต่างกันได้ หาจำนวนหมีพูห์รวมน้อยที่สุด ตัวอย่าง คะแนน: [2, 3, 3] → หมี: [1, 2, 1] = รวม 4 ตัว อัลกอริทึม (Two-pass / Dynamic Program

  11. ลดผลรวมอาร์เรย์ให้น้อยที่สุดด้วยการ XOR ใน C++

    ปัญหา ให้อาร์เรย์ขนาด N หาค่า X ที่ทำให้ผลรวมของ (arr[i] XOR X) น้อยที่สุด ตัวอย่าง: arr = [8, 5, 7, 6, 9] ถ้า X = 5: 8^5=13, 5^5=0, 7^5=2, 6^5=3, 9^5=12 ผลรวม = 13+0+2+3+12 = 30 (น้อยที่สุด) วิธีแก้ปัญหา: Bitwise Analysis พิจารณาแต่ละบิตแยกกัน (32 บิตสำหรับ int): บิตที่ i: นับจำนวนสมาชิกที่มีบิ

  12. จำนวนคู่เพื่อนน้อยที่สุดและมากที่สุดในทีม C++

    ปัญหา มีผู้เข้าร่วม n คน แบ่งเป็น m ทีม (แต่ละทีมอย่างน้อย 1 คน) หลังการแข่งขัน สมาชิกในทีมเดียวกันจะกลายเป็นเพื่อนกันหมด หาจำนวนคู่เพื่อนที่น้อยที่สุดและมากที่สุดที่เป็นไปได้ การวิเคราะห์ จำนวนคู่ในทีมที่มีขนาด k คือ C(k,2) = k(k-1)/2 จำนวนคู่สูงสุด (Max Pairs) ทำให้ทีมหนึ่งใหญ่ที่สุดเท่าที่จะเป็

  13. การวิเคราะห์แบบ Amortized สำหรับตัวนับไบนารีใน C++

    Amortized Analysis คืออะไร? วิเคราะห์ค่าเฉลี่ยของค่าใช้จ่าย (cost) ต่อ operation ในลำดับการทำงาน ไม่ใช่ average-case analysis แต่เป็น worst-case guarantee สำหรับลำดับ operations ปัญหา: Binary Counter Increment k-bit binary counter เริ่มที่ 0 ทำการ increment n ครั้ง 0000 → 0001 → 0010 → 0011 → 0100

  14. คำถามเกี่ยวกับ Time Complexity ของ Insertion Sort ใน C++

    Time Complexity ของ Insertion Sort กรณีComplexityเงื่อนไข Best CaseO(n)อาร์เรย์จัดเรียงแล้ว Average CaseO(n²)ข้อมูลสุ่ม Worst CaseO(n²)อาร์เรย์จัดเรียงย้อนกลับ คำถามพิเศษ: อาร์เรย์รูปแบบ 6,5,8,7,10,9,... (สลับคู่) อาร์เรย์: [6,5, 8,7, 10,9, ..., i, i-1] ทุกคู่ (2k, 2k-1) ถูกสลับกัน วิเคราะห์ Ins

  15. วิธีน่าสนใจพิมพ์ Linked List ย้อนหลังใน C++

    ปัญหา พิมพ์ Linked List แบบย้อนหลัง (Reverse) โดยไม่แก้โครงสร้าง List และท่องแค่ครั้งเดียว ไอเดีย: ใช้ Carriage Return (\r) Carriage Return (\r) ย้าย cursor กลับไปต้นบรรทัด โดยไม่ขึ้นบรรทัดใหม่ กลยุทธ์: หาความยาว List (n) ท่อง List ครั้งเดียว พร้อมพิมพ์แต่ละโหนดพร้อม \r ก่อนพิมพ์โหนดที่ j ให้พิมพ์

  16. คำถามน่าสนใจเกี่ยวกับ Time Complexity ใน C++

    Time Complexity คืออะไร? เวลาที่อัลกอริทึมใช้ในการรัน แสดงเป็นฟังก์ชันของขนาด input (n) โดยใช้ Big-O notation ตัวอย่างที่ 1: Nested Loop แบบพิเศษ void counter(int n) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j += i) { cout << i << <<

  17. การเข้าถึงอาร์เรย์แบบไม่ธรรมดาใน C++

    วิธีมาตรฐาน vs วิธีพิเศษ ปกติเราเข้าถึงอาร์เรย์ด้วย arr[index] แต่ C++ อนุญาตให้เขียนเป็น index[arr] ได้เช่นกัน! ตัวอย่าง #include <iostream> using namespace std; int main() { int arr[2] = {32, 65}; // วิธีมาตรฐาน cout << Standard: arr[0] = << arr[0] << ,

  18. พื้นที่สี่เหลี่ยมจัตุรัสจากความยาวเส้นทแยงมุมใน C++

    ปัญหา ให้ความยาวเส้นทแยงมุม (diagonal) ของสี่เหลี่ยมจัตุรัส หาพื้นที่ การนำสูตร สี่เหลี่ยมจัตุรัสด้าน a, เส้นทแยง d จากทฤษฎีบทพีทาโกรัส: d² = a² + a² = 2a² ดังนั้น a² = d²/2 แต่พื้นที่สี่เหลี่ยมจัตุรัส = a² สรุป: Area = d² / 2 ตัวอย่างโค้ด C++ #include <iostream> #include <iomanip> usi

  19. พื้นที่สามเหลี่ยมภายในสี่เหลี่ยมขนานใน C++

    ปัญหา ให้สี่เหลี่ยมขนานที่มีฐาน (base) และความสูง (height) มีสามเหลี่ยมล้อมรอบอยู่ภายใน โดยแบ่งปันฐานและความสูงเดียวกัน หาพื้นที่ของสามเหลี่ยม สูตร พื้นที่สามเหลี่ยม = ½ × ฐาน × ความสูง Area = 0.5 * b * h เหตุผล สี่เหลี่ยมขนานพื้นที่ = b × h สามเหลี่ยมที่มีฐานและความสูงเท่ากัน จะมีพื้นที่เป็นครึ่ง

  20. จำนวนคณิตศาสตร์ (Arithmetic Number) ใน C++

    จำนวนคณิตศาสตร์ (Arithmetic Number) คืออะไร? จำนวนเต็มบวก n ที่ค่าเฉลี่ยของตัวหารทั้งหมดเป็นจำนวนเต็ม เงื่อนไข: (ผลรวมตัวหาร) % (จำนวนตัวหาร) == 0 ตัวอย่าง n = 6 ตัวหาร: 1, 2, 3, 6 ผลรวม = 12 จำนวนตัวหาร = 4 ค่าเฉลี่ย = 12/4 = 3 (จำนวนเต็ม) → 6 เป็น Arithmetic Number ✓ n = 4 ตัวหาร: 1, 2, 4 ผลร

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:85/301  20-คอมพิวเตอร์/Page Goto:1 79 80 81 82 83 84 85 86 87 88 89 90 91