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

    มี N 範圍 (Ranges) แต่ละอันมีค่า L และ R หา Index (0-based) ของ Range ที่ครอบคลุม Range อื่นๆ ทั้ง N-1 อัน หากไม่มีให้คืน -1 ตัวอย่าง: L = [2, 4, 3, 1], R = [4, 6, 7, 9] → Output = 3 (Range index 3 คือ [1,9] ครอบคลุมทุกอัน) ข้อสังเกตสำคัญ เนื่องจากค่า L และ R ทั้งหมดไม่ซ้ำกัน หา Range ที่มี L น้อยที

  2. หาผลลัพธ์ทั้งหมดที่เป็นไปได้ของนิพจน์คณิตศาสตร์โดยไม่มีวงเล็บใน C++

    นิพจน์คณิตศาสตร์โดยไม่มีวงเล็บ เช่น 1+2*3-4 สามารถตีความได้หลายแบบ ต้องการหาผลลัพธ์ทั้งหมดที่เป็นไปได้ ตัวอย่าง 1+2*3-4 มีผลลัพธ์ที่เป็นไปได้: 1+(2*(3-4)) = -1 (1+2)*(3-4) = -3 1+((2*3)-4) = 3 ((1+2)*3)-4 = 5 1+(2*3)-4 = 3 อัลกอริทึม (Divide & Conquer) สำหรับตัวดำเนินการแต่ละตัวในนิพจน์ คำนวณผล

  3. หาต้นทุน (Cost Price) จากราคาขายและเปอร์เซ็นต์กำไร/ขาดทุนใน C++

    กำหนดราคาขาย (Selling Price) และเปอร์เซ็นต์กำไรหรือขาดทุน หาต้นทุน (Cost Price) สูตร กรณีกำไร: Cost Price = (Sell Price × 100) / (100 + %Profit) กรณีขาดทุน: Cost Price = (Sell Price × 100) / (100 - %Loss) ตัวอย่างโค้ด #include <iostream> using namespace std; float priceWhenProfit(int sellPr

  4. หา Equal Point (จุดที่จำนวนน้อยกว่าเท่ากับจำนวนมากกว่า) ในอาร์เรย์เรียงลำดับมีค่าซ้ำ (C++)

    ให้อาร์เรย์เรียงลำดับมี n องค์ประกอบ หา Index ที่จำนวนสมาชิกน้อยกว่าค่าที่ Index นั้น เท่ากับจำนวนสมาชิกมากกว่า หากมีหลาย Index ให้คืน Index แรก หากไม่มีคืน -1 ตัวอย่าง: A = [1, 1, 2, 3, 3, 3, 3, 3] → Equal Point อยู่ที่ Index 2 (ค่า 2) เพราะมีค่าน้อยกว่า 1 ค่า (1) และค่ามากกว่า 1 ค่า (3) อัลกอริท

  5. หา Leaf แรกที่ไม่ตรงกันของ Binary Tree สองต้นใน C++

    ให้ Binary Tree สองต้น หา Leaf แรกที่ไม่ตรงกัน (ในลำดับ Preorder) หากไม่มี Leaf ที่ไม่ตรงกัน ให้ไม่แสดงอะไร Leaf แรกที่ไม่ตรงกันคือ 11 และ 15 อัลกอริทึม ใช้ Iterative Preorder Traversal พร้อมกันสำหรับทั้งสองต้น โดยใช้ Stack แยกกัน Push root ของทั้งสองต้นลง Stack Pop แล้วดันลงไปจนเจอ Leaf (Push r

  6. ตรวจสอบว่าสามารถไปถึงจุดสิ้นสุดได้หรือไม่จากการเปลี่ยนผ่านที่กำหนด (C++)

    มีจุดบนแกน x จำนวน n จุด และมีรายการการเปลี่ยนผ่าน (Transitions) ที่อนุญาตระหว่างจุด หากมีการเปลี่ยนผ่านจาก x1 ไป x2 สามารถเคลื่อนที่ไปจุดกลางระหว่าง x1 ถึง x2 หรือไป x2 โดยตรงได้ ตัวอย่าง: n = 5, Transitions: (0,2), (2,4), (3,5) → สามารถไปถึงได้ (0→2→3→5) คำตอบ: YES อัลกอริทึม จัดเรียงคู่ตามค่าแ

  7. หา Index ของ 0 ที่ควรแทนที่ด้วย 1 เพื่อให้ได้ลำดับ 1 ต่อเนื่องมากที่สุด (C++)

    ให้อาร์เรย์ไบนารี (มีแค่ 0 และ 1) หาตำแหน่งของ 0 ที่ถ้าเปลี่ยนเป็น 1 จะได้ลำดับ 1 ต่อเนื่อง (Contiguous) ยาวที่สุด ตัวอย่าง: arr = [1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1] → คำตอบคือ Index 9 อัลกอริทึม ติดตาม 3 ตัวแปร: current index (curr), previous zero (pz), previous-previous zero (ppz) เมื่อเจอ

  8. หา Special Prime ่ที่ใหญ่ที่สุดและไม่เกิน N ใน C++

    Special Prime คือจำนวนเฉพาะที่เมื่อนำตัวเลขทิ้งทีละหลักจากขวาไปซ้าย ทุกขั้นตอนต้องเป็นจำนวนเฉพาะเสมอ ตัวอย่าง: 379 เป็น Special Prime เพราะ 379, 37, 3 ล้วนเป็นจำนวนเฉพาะ อัลกอริทึม ใช้ Sieve of Eratosthenes สร้างตารางจำนวนเฉพาะ עד N ตรวจสอบจาก N ลงมาจนกว่าจะเจอ Special Prime การตรวจสอบ: แบ่งตัวเล

  9. หาความยาว subsequence ยาวที่สุดของสตริง X ที่เป็น substring ของสตริง Y (C++)

    ให้สตริง X และ Y ต้องการหาความยาวของ Subsequence ยาวที่สุดของ X ที่เป็น Substring ของ Y ตัวอย่าง: X = ABCD, Y = BACDBDCD → ผลลัพธ์คือ 3 เพราะ ACD เป็น Subsequence ของ X และเป็น Substring ของ Y วิธีแก้ด้วย Dynamic Programming สร้างตาราง DP ขนาด (m+1) × (n+1) โดย m = ความยาว Y, n = ความยาว X DP[i][j

  10. การเปรียบเทียบสตริงใน C++ ด้วยฟังก์ชัน compare()

    ใน C++ คลาส string มีฟังก์ชัน compare() สำหรับเปรียบเทียบสตริง ฟังก์ชันนี้ตรวจสอบตัวอักษรทีละตัว หากพบความแตกต่างจะคืนค่าที่ไม่ใช่ 0 คืนค่า 0: สตริงทั้งสองเท่ากัน 0: สตริงแรกมากกว่าสตริงที่สอง (ตามลำดับเล็กโซอกราฟิก) คืนค่า < 0: สตริงแรกน้อยกว่าสตริงที่สอง ตัวอย่างโค้ด #include <iostream>

  11. หาเส้นทางต่อเนื่องที่ยาวที่สุดจากตัวอักษรเริ่มต้นในเมทริกซ์ (C++)

    ให้เมทริกซ์ของตัวอักษรต่างๆ เริ่มจากตัวอักษรหนึ่ง ต้องหาเส้นทางที่ยาวที่สุดโดยเคลื่อนที่ไปยังตัวอักษรที่มีค่ามากกว่าตัวอักษรปัจจุบัน 1 หน่วย (Consecutive) และต้องอยู่ติดกัน 8 ทิศทาง เริ่มจาก E ใช้ Depth First Search (DFS) ร่วมกับ Dynamic Programming (Memoization) เพื่อหลีกเลี่ยงการคำนวณซ้ำของ Sub

  12. เทคนิค C++ ที่น่ารู้สำหรับมือใหม่ในการแข่งขันเขียนโปรแกรม (Competitive Programming)

    บทความนี้รวบรวมเทคนิค C++ ที่มีประโยชน์สำหรับการแข่งขันเขียนโปรแกรม (Competitive Programming) ช่วยลดเวลาเขียนโค้ดและเพิ่มประสิทธิภาพ ให้ดูตัวอย่างแต่ละข้อกันครับ 1. ตรวจสอบเลขคู่/คี่ โดยไม่ใช้ตัวดำเนินการ % (Modulo) ใช้บิตเวิร์ส AND (&) กับเลข 1 แทน หากผลลัพธ์ไม่ใช่ 0 = เลขคี่, หากเป็น 0 = เลขค

  13. การใช้งานจำนวนเชิงซ้อนในภาษา C++

    ในส่วนนี้เราจะดูวิธีการสร้างและใช้งานจำนวนเชิงซ้อน (Complex Numbers) ในภาษา C++ เราสามารถสร้างคลาสสำหรับจำนวนเชิงซ้อนที่เก็บส่วนจริง (Real Part) และส่วนจินตภาพ (Imaginary Part) เป็นสมาชิกข้อมูล พร้อมกับฟังก์ชันสมาชิกต่างๆ เพื่อจัดการคลาสนี้ ตัวอย่างโค้ด #include <iostream> using namespace std

  14. หาค่าสูงสุดใน Stack แบบ O(1) Time และ O(1) Extra Space ใน C++

    โจทย์ ออกแบบ Stack ที่รองรับการดึงค่าสูงสุด (getMax) ใน O(1) โดยใช้ Extra Space แค่ O(1) (ไม่ใช้ Stack/Array เพิ่ม) เทคนิค (Encoding ใน Stack เอง) เก็บค่า เข้ารหัส แทนค่าจริง: Push x: ถ้า x > max ปัจจุบัน → push (2*x - max), อัปเดต max = x; มิฉะนั้น push x ปกติ Pop: ถ้า top > max → ค่าจริงคื

  15. ฟังก์ชัน sort() ใน C++ Standard Template Library (STL)

    การใช้ sort() ใน STL Header: <algorithm> รูปแบบ: sort(begin, end) เรียงจากน้อยไปมาก (Ascending) ตัวอย่าง: [52, 14, 85, 63, 99, 54, 21] → [14, 21, 52, 54, 63, 85, 99] ตัวอย่างโค้ด C++ #include <iostream> #include <algorithm> using namespace std; int main() { int arr[] = {52, 1

  16. หาจำนวนสมาชิกสูงสุดที่ความต่างสัมบูรณ์ ≤ 1 ใน C++

    โจทย์ ให้อาร์เรย์ n ตัว ต้องการเลือกสมาชิกมากที่สุดที่ความต่างสัมบูรณ์ระหว่างคู่ใดคู่หนึ่ง ≤ 1 ตัวอย่าง: [2, 2, 3, 4, 5] → เลือกได้ 3 ตัว (2, 2, 3) ข้อสังเกต ความต่าง ≤ 1 หมายถึงตัวเลขต้องเป็น x และ x+1 เท่านั้น → หา max ของ (freq[x] + freq[x+1]) ตัวอย่างโค้ด C++ first; if (occurrence[key

  17. เมื่อไหร่ควรเขียน Assignment Operator เองใน C++

    เมื่อไหร่ต้องเขียน Assignment Operator เอง ถ้า Class ไม่มี Pointer → ไม่ต้องเขียน เนื่องจาก Compiler สร้าง Copy Constructor และ Assignment Operator ให้อัตโนมัติ (Shallow Copy) แต่ถ้ามี Pointer → Shallow Copy จะทำให้ 2 Object ชี้ pointer เดียวกัน → ปัญหา Double Free หรือการเปลี่ยนค่าร่วมกัน ตัวอย่าง

  18. หาตัวเลขสูงสุดที่สร้างจากหลักของตัวเลขที่กำหนดใน C++

    โจทย์ ให้ตัวเลข N หลัก ต้องการจัดเรียงหลักตัวเลขใหม่ให้ได้ตัวเลขมากที่สุด ตัวอย่าง: 339625 → 965332 วิธีแก้ปัญหา (Counting Sort - O(d)) แทนการเรียง (O(d log d)) ใช้อาร์เรย์นับความถี่ขนาด 10 (0-9): นับความถี่แต่ละหลัก พิมพ์จาก 9 ลงมา 0 ตามความถี่ ซับซ้อน O(d) โดย d = จำนวนหลัก ตัวอย่างโค้ด C++ #i

  19. ทำไม C++ ถึงเป็นภาษา Object-Oriented แบบบางส่วน (Partially OOP)

    เหตุผลที่ C++ ไม่ใช่ Pure OOP แม้ C++ จะรองรับ 3 ศีลของ OOP ได้แก่ Inheritance, Encapsulation, Polymorphism แต่ไม่ได้รองรับอย่างเต็มที่ ทำให้เป็น Partially Object-Oriented 1. ฟังก์ชัน main() ไม่บังคับอยู่ใน Class ใน C++ ฟังก์ชัน main() อยู่นอก Class สามารถเขียนโค้ดได้โดยไม่ต้องสร้าง Class เลย (ต่าง

  20. หาเลขชี้กำลังสูงสุดของจำนวนที่หาร Factorial ลงตัวใน C++

    โจทย์ ให้จำนวน n และ fact ต้องการหาเลขชี้กำลังสูงสุดของ n ที่หาร fact! ลงตัว ตัวอย่าง: fact=5, n=2 → 5! = 120, 2³=8 หาร 120 ลงตัว, 2⁴=16 ไม่ลงตัว → คำตอบ 3 วิธีแก้ปัญหา (Legendres Formula) แยกเฉพาะตัวประกอบของ n สำหรับแต่ละเฉพาะตัว p หาเลขชี้กำลังใน fact! ด้วยสูตร: fact/p + fact/p² + fact/p³ + ...

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:100/301  20-คอมพิวเตอร์/Page Goto:1 94 95 96 97 98 99 100 101 102 103 104 105 106