Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. Robot Bounded In Circle ใน C++

    คำอธิบายปัญหา หุ่นยนต์อยู่บนระนาบอนันต์ เริ่มต้นที่ (0,0) หันหน้าไปทางเหนือ ได้รับคำสั่ง 3 แบบ: G - เดินตรง 1 หน่วย L - เลี้ยวซ้าย 90 องศา R - เลี้ยวขวา 90 องศา หุ่นยนต์จะทำซ้ำชุดคำสั่งนี้ไปเรื่อยๆ ต้องการตรวจสอบว่ามีวงกลมอยู่ที่ทำให้หุ่นยนต์ไม่เคยออกนอกวงกลมนั้นหรือไม่ ตัวอย่าง: GGLLGG → true (เด

  2. Longest String Chain ใน C++

    คำอธิบายปัญหา กำหนดรายการคำ (words) ที่ประกอบด้วยตัวอักษรพิมพ์เล็ก คำ word1 ถือเป็น predecessor ของ word2 ก็ต่อเมื่อเราสามารถเพิ่มตัวอักษรได้เพียง 1 ตัวในตำแหน่งใดก็ได้ของ word1 เพื่อให้กลายเป็น word2 เช่น abc เป็น predecessor ของ abac Word chain คือลำดับคำ [word_1, word_2, ..., word_k] ที่ word_i เ

  3. Last Stone Weight II ใน C++

    คำอธิบายปัญหา สมมติว่ามีชิ้นหินหลายชิ้น แต่ละชิ้นมีน้ำหนักเป็นจำนวนเต็มบวก ในแต่ละรอบเราจะเลือกหินสองชิ้นมาชนกัน หากหินมีน้ำหนัก x และ y โดยที่ x <= y ผลลัพธ์จะเป็นดังนี้: ถ้า x = y ทั้งสองชิ้นจะถูกทำลายหมด ถ้า x != y หินที่มีน้ำหนัก x จะถูกทำลาย และหินที่มีน้ำหนัก y จะเหลือน้ำหนัก y-x สุดท้ายจ

  4. Shortest Way to Form String ใน C++

    ปัญหา ให้ String Source และ Target หาจำนวน Subsequence ของ Source น้อยที่สุด ที่ต่อกันได้ Target ไม่ได้ → -1 Subsequence = ลบบางตัวอักษรออก คงลำดับ ตัวอย่าง Source=abc, Target=abcbc → 2 (abc + bc) อัลกอริทึม: Greedy + Binary Search Preprocess: เก็บ Index ของแต่ละ Char ใน Source (Map<Char

  5. Minimize Rounding Error เพื่อให้ผลรวมเท่ากับ Target ใน C++

    ปัญหา ให้ Array ราคา P และ Target ให้ปัดแต่ละราคาเป็น Floor หรือ Ceil ผลรวมต้องเท่ากับ Target หา Rounding Error น้อยที่สุด Error = Σ |Round(Pᵢ) - Pᵢ| คืนเป็น String 3 ทศนิยม ตัวอย่าง P = [0.700, 2.800, 4.900], Target = 8 Floor: 0, 2, 4 = 6 → ต้อง Ceil อีก 2 ตัว เลือก Ceil ที่ Error เพิ่มน้อยที่สุด

  6. Missing Element ใน Sorted Array ใน C++

    ปัญหา ให้ Sorted Array A ของ Unique Numbers หา Missing Number ลำดับที่ K (นับจาก Element แรก) ตัวอย่าง: A=[4,7,9,10], K=1 → Missing: 5,6,8... → ตัวที่ 1 คือ 5 อัลกอริทึม: Binary Search Missing Count ระหว่าง Index 0 ถึง i = A[i] - A[0] - i Binary Search หา Index ที่ Missing Count ≥ K ตัวอย่างโค้ด

  7. Lexicographically Smallest Equivalent String ใน C++

    ปัญหา ให้ String A, B ความยาวเท่ากัน A[i] เทียบเท่า B[i] ความสัมพันธ์ Equivalence (Reflexive, Symmetric, Transitive) ให้ String S หา Equivalent String ที่เล็กที่สุด Lexicographically ตัวอย่าง A=parker, B=morris, S=parser Equivalence Groups: [m,p], [a,o], [k,r,s], [e,i] ตัวแทนเล็กสุดของแต่ละกลุ่ม:

  8. Longest Repeating Substring ใน C++

    ปัญหา ให้ String S หาความยาว Substring ที่ซ้ำกัน (ปรากฏมากกว่า 1 ครั้ง) ยาวที่สุด คืน 0 ถ้าไม่มี ตัวอย่าง: abbaba → ab หรือ ba ความยาว 2 อัลกอริทึม: Dynamic Programming DP[i][j] = ความยาว Common Suffix ของ S[0..i-1] และ S[0..j-1] ที่จบที่ i-1, j-1 if S[i-1] == S[j-1]: DP[i][j] = DP[i-1][j-1] + 1

  9. Brace Expansion ใน C++

    ปัญหา ให้ String S แทนรายการคำ โดยตัวอักษรแต่ละตัวมีตัวเลือก 1 หรือหลายตัว ตัวเลือกเดียว: เขียนตัวอักษรเลย (เช่น a) หลายตัวเลือก: ใช้ {} ครอบ คั่นด้วย comma (เช่น {a,b,c}) ตัวอย่าง: {a,b}c{d,e}f → [acdf, acef, bcdf, bcef] (เรียง Lexicographic) อัลกอริทึม: Parse + Backtracking Parse

  10. ค่าสูงสุดของ Absolute Value Expression ใน C++

    ปัญหา ให้ Array arr1, arr2 ขนาดเท่ากัน หาค่าสูงสุดของ: |arr1[i] - arr1[j]| + |arr2[i] - arr2[j]| + |i - j| สำหรับทุกคู่ i, j ตัวอย่าง arr1 = [1,2,3,4], arr2 = [-1,4,5,6] → Output = 13 วิธีแก้: แปลง Absolute Value Expression = max ของ 4 กรณี (จากการกำจัด | |): Case 1: (arr1[i] - arr2[i] + i) - (a

  11. Longest Common Subsequence (LCS) ใน C++

    ปัญหา ให้ String สองตัว text1, text2 หาความยาว Longest Common Subsequence (LCS) Subsequence = ลบบางตัวอักษรออก (อาจไม่ลบ) คงลำดับเดิม ตัวอย่าง text1 = abcde, text2 = ace → LCS = ace ความยาว 3 Dynamic Programming DP[i][j] = LCS ของ text1[0..i-1] และ text2[0..j-1] if text1[i-1] == text2[j-1]: DP[i]

  12. Swap เพื่อหา Substring ตัวอักษรซ้ำยาวที่สุดใน C++

    ปัญหา ให้ String Text สลับตัวอักษร 2 ตัวได้ 1 ครั้ง หาความยาว Substring ที่ตัวอักษรซ้ำกันติดกันยาวที่สุด ตัวอย่าง: ababa → สลับ b แรกกับ a ท้าย → aaabb → aaa ยาว 3 อัลกอริทึม (Sliding Window + Frequency Map) นับ Frequency ของทุกตัวอักษรใน String (Map m) Sliding Window [j, i] รักษาเงื่อนไ

  13. ลบโหนดที่ผลรวมเป็นศูนย์ติดต่อกันใน Linked List ด้วย C++

    ปัญหา ให้ Head ของ Linked List ลบ Subsequence ที่ติดกันซ้ำๆ จนกว่าจะไม่มี Subsequence ที่ผลรวมเป็น 0 คืน Head ของ List ที่เหลือ ตัวอย่าง: [1,2,-3,3,1] → [3,1] (เพราะ 1+2-3=0 ถูกลบ เหลือ 3,1) อัลกอริทึม (Prefix Sum + Hash Map) สร้าง Dummy Node ชี้ Head Pass 1: คำนวณ Prefix Sum เก็บ Map<

  14. Merge Operations ใน C++ STL: merge, includes, set_union, set_intersection, set_difference, inplace_merge

    ในบทเรียนนี้ เราจะอธิบาย Merge Operations ต่างๆ ใน C++ STL (<algorithm>) 1. merge() รวม 2 Container ที่เรียงแล้ว ให้ได้ Container ใหม่ที่เรียงแล้ว 2. includes() ตรวจสอบว่า Container แรกมี Element ครอบคลุม Container ที่สองหมดหรือไม่ 3. set_union() Union ของ 2 เซต (Element ทั้งหมด ไม่ซ้ำ) 4

  15. Operator Overloading เพื่อพิมพ์ Vector, Map, Pair ใน C++

    ในบทเรียนนี้ เราจะสาธิต Operator Overloading ของ operator<< เพื่อพิมพ์ Vector, Map, Pair ได้ง่าย Operator Overloading คืออะไร? กำหนดพฤติกรรมของ Operator ให้ทำงานกับ User-defined Type ได้ 1. Overload สำหรับ Vector #include <iostream> #include <vector> using namespace std; templa

  16. ลำดับการเรียก Constructor/Destructor ใน C++

    ในบทเรียนนี้ เราจะอธิบายลำดับการเรียก Constructor และ Destructor ใน C++ เมื่อมี Inheritance กฎลำดับ Constructor Base Class Constructor เรียกก่อน (จาก Base บนสุดลงมา) Member Object Constructor เรียกตามลำดับ宣告 Derived Class Constructor เรียกทีหลัง กฎลำดับ Destructor กลับกัน Constructo

  17. Ordered Set และ GNU C++ PBDS

    ในบทเรียนนี้ เราจะอธิบาย Ordered Set และ GNU C++ PBDS (Policy-Based Data Structures) Ordered Set คืออะไร? Ordered Set เป็น Data Structure แบบ Policy-Based (ไม่อยู่ใน STL มาตรฐาน) เก็บ Element เรียงลำดับ ไม่ซ้ำ รองรับ Operation เพิ่มเติม: find_by_order(k) − Iterator ชี้ Element อันดับ k (0-ind

  18. Output Iterators ใน C++

    ในบทเรียนนี้ เราจะอธิบาย Output Iterators ใน C++ Iterator 5 ประเภท Input Iterator Output Iterator Forward Iterator Bidirectional Iterator Random Access Iterator Output Iterator คืออะไร? Output Iterator ใช้ เขียนค่า (Write-only) ไม่สามารถอ่านค่าได้ ทำงานตรงข้าม Input Iterator

  19. Override Keyword ใน C++

    ในบทเรียนนี้ เราจะอธิบาย override Keyword ใน C++ Override คืออะไร? override ใช้บอก Compiler ว่า Function นี้ Override Virtual Function จาก Base Class ช่วยจับ Error ได้เวลา Compile ถ้า Signature ไม่ตรง ตัวอย่าง #include <iostream> using namespace std; class Base { public: virtual void f

  20. Pair ใน C++ Standard Template Library (STL)

    ในบทเรียนนี้ เราจะอธิบาย pair ใน C++ STL Pair คืออะไร? pair เป็น Container ใน Header <utility> เก็บค่า 2 ค่า รวม Type ต่างกันได้ ใช้จับคู่ข้อมูล 2 ชิ้น สมาชิกของ Pair first − ค่าแรก second − ค่าที่สอง ตัวอย่าง #include <iostream> #include <utility> using namespace std

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:156/301  20-คอมพิวเตอร์/Page Goto:1 150 151 152 153 154 155 156 157 158 159 160 161 162