Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. สร้าง Frequency Stack ใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะสร้าง Frequency Stack ซึ่งเป็น Stack ที่การ pop() จะคืนค่า สมาชิกที่มีความถี่ (frequency) สูงสุด หากมีหลายค่าความถี่เท่ากัน ให้คืนค่าที่ ใกล้ด้านบนสุด (most recent) ตัวอย่าง append(7), append(9), append(7), append(9), append(6), append(7) pop() → 7 (freq 3), pop() → 9 (fre

  2. หาผลรวมค่าสัมบูรณ์ติดกันสูงสุดหลังกลับลำดับย่อยได้ 1 ครั้งใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา ค่าสูงสุดของผลรวม |nums[i+1] - nums[i]| หลังจากทำ การกลับลำดับ (reverse) ย่อยหนึ่งช่วง (subarray) ได้สูงสุด 1 ครั้ง ตัวอย่าง Input: nums = [2, 4, 6] Output: 6 กลับ [4, 6] → [2, 6, 4] → |2-6| + |6-4| = 4 + 2 = 6 อัลกอริทึม พิจารณาผลของการ reverse subarray [l, r] ต่อผลรว

  3. สร้าง Maximum Stack รองรับ popmax() ใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะสร้าง Maximum Stack ซึ่งเป็น Stack ที่รองรับการดึงค่าสูงสุด (max) และลบค่าสูงสุด (popmax) ได้ใน O(log n) การดำเนินการที่รองรับ MaxStk() - สร้าง instance ใหม่ push(val) - เพิ่มค่าเข้า stack top() - ดูค่าบนสุด max() - ดูค่าสูงสุด pop() - ลบและคืนค่าบนสุด popmax(

  4. นับจำนวนเต็ม ≤ n ที่มีหลักซ้ำกันใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะนับจำนวนจำนวนเต็มบวกที่ ≤ n ซึ่งมี อย่างน้อย 1 หลักที่ซ้ำกัน (at least one repeated digit) ตัวอย่าง Input: n = 200 Output: 38 แนวคิดการแก้ปัญหา (Complementary Counting) แทนที่จะนับ มีหลักซ้ำ โดยตรง ให้คำนวณ: Total - ไม่มีหลักซ้ำ (unique digits) Total = n นับจำนวนที่ม

  5. โปรแกรมหาค่ามัธยฐาน (Median) ของอาร์เรย์จำนวนเต็มใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะสร้างคลาส MedianClass ที่รองรับ 2 การดำเนินการ: add(value) - เพิ่มค่าเข้าไปในโครงสร้างข้อมูล median() - หาค่ามัธยฐานของตัวเลขทั้งหมดที่เพิ่มไปแล้ว ตัวอย่างการใช้งาน add(5), add(3), add(8) → median() = 5.0 add(9) → median() = 6.5 อัลกอริทึม: Two Heaps (Priority Queue

  6. หา 3 จำนวน ≤ N ที่ LCM มากที่สุดใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา 3 จำนวนเต็มที่ ≤ N ซึ่งมี LCM (Least Common Multiple) มากที่สุด LCM คืออะไร? LCM (Least Common Multiple) = ตัวคูณร่วมน้อยที่สุดของชุดจำนวน ถ้าจำนวนไม่มีตัวหารร่วม (coprime) LCM = ผลคูณของทุกจำนวน ขั้นตอนการแก้ปัญหา ถ้า N เป็น เลขคี่: 3 จำนวนคือ N, N-1, N-2 ถ้า N เ

  7. หาเวลาที่สัญญาณใช้ถึงทุกตำแหน่งในสตริง (C++)

    บทนำ ในบทช่วยสอนนี้ เราจะคำนวณ เวลาที่สัญญาณ (signal) ใช้ในการแพร่ไปถึงทุกตำแหน่ง (position) ในสตริง กฎของปัญหา สตริงประกอบด้วยตัวอักษร s (signal) และ p (position) เท่านั้น สัญญาณเริ่มจาก s และแพร่ไปทั้งซ้ายและขวา ใช้เวลา 1 หน่วยต่อการเคลื่อนที่ 1 ตำแหน่ง หาเวลาขั้นต่ำที่ทำให้ p ทุกตัวกลา

  8. หาจำนวนปีที่ไม่ซ้ำกันจากสตริงใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา จำนวนปีที่ไม่ซ้ำกัน (distinct years) ในสตริงที่มีวันที่อยู่ในรูปแบบ DD/MM/YYYY ตัวอย่าง Input: Sample example with dates 01/11/2020, 02/12/2020, and 03/10/2019. Output: 2 (ปี 2020 และ 2019) ขั้นตอนการแก้ปัญหา กำหนดข้อความที่มีวันที่ ใช้ Regular Expression (regex)

  9. หา Trace ของแมทริกซ์จากการบวก Row-major และ Column-major ใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา Trace (แทรซ/ผลรวมแนวทแยง) ของแมทริกซ์ที่ได้จากการบวก Row-major matrix และ Column-major matrix ของออเดอร์เดียวกัน Row-major vs Column-major Order 3×3: Row-major: Column-major: 123 456 789 147 258 369 ขั้นตอนการแก้ปัญหา สร้าง Row-major matrix

  10. หาสองจำนวนเฉพาะที่ต่างกันที่ผลคูณเท่าค่าที่กำหนดใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา สองจำนวนเฉพาะที่ต่างกัน (distinct primes) ที่ผลคูณเท่ากับค่าที่กำหนด ตัวอย่าง Input: 21 Output: 3 7 ขั้นตอนการแก้ปัญหา สร้างอาร์เรย์ boolean เพื่อจำว่าตัวเลขไหนเป็นจำนวนเฉพาะ (Sieve of Eratosthenes) หาจำนวนเฉพาะทั้งหมดที่น้อยกว่าหรือเท่ากับ n วนลูป i จาก 2 ถึง n

  11. หาสองจำนวนที่ผลรวมและผลคูณเท่ากับ N เดียวกันใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา สองจำนวน x และ y ที่ทำให้: x + y = n x * y = n หากไม่มีคำตอบ ให้พิมพ์ None หลักการคณิตศาสตร์ x และ y เป็นรากของสมการกำลังสอง: t² - nt + n = 0 สูตรราก: x, y = (n ± √(n² - 4n)) / 2 เงื่อนไขที่มีคำตอบจริง: n² - 4n ≥ 0 → n ≥ 4 หรือ n ≤ 0 ตัวอย่างโค้ด #include <bit

  12. หาตัวอักษรที่ไม่ซ้ำกันระหว่างสองสตริงใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา ตัวอักษรที่ไม่ซ้ำกัน (uncommon/distinct characters) ระหว่างสองสตริง คือตัวอักษรที่ปรากฏในสตริงใดสตริงหนึ่ง แต่ไม่ปรากฏในอีกสตริงหนึ่ง ตัวอย่าง Input: string_one = tutorialspoint, string_two = tutorialsworld Output: d n p w อัลกอริทึม: Hashing (Map) ใช้ map เก็บสถานะของ

  13. หา Union และ Intersection ของอาร์เรย์ไม่เรียงลำดับใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา Union (ยูเนียน) และ Intersection (อินเตอร์เซกชัน) ของอาร์เรย์ 2 ชุดที่ไม่ได้เรียงลำดับ ตัวอย่าง Input: arr_one = [1, 2, 3, 4, 5], arr_two = [3, 4, 5, 6, 7] Output: Union: 1 2 3 4 5 6 7, Intersection: 3 4 5 ขั้นตอนการแก้ปัญหา Union สร้างอาร์เรย์ union_result ว่าง

  14. หาคู่ที่ไม่ซ้ำกันที่ทุกค่าน้อยกว่า N ใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะสร้างคู่ที่ไม่ซ้ำกัน (unique pairs) โดยที่สมาชิกทั้งสองในคู่ต้องน้อยกว่า N ขั้นตอนการแก้ปัญหา กำหนดค่า N วนลูป i จาก 1 ถึง N-1 วนลูป j จาก i+1 ถึง N-1 (เพื่อไม่ให้ซ้ำ และ i < j) พิมพ์คู่ (i, j) ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; vo

  15. หาจำนวนวิธีแสดงจำนวนเต็มเป็นผลรวมของ n-th power ของจำนวนธรรมชาติที่ไม่ซ้ำใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหาจำนวนวิธีที่จำนวนเต็ม number สามารถเขียนในรูปผลรวมของ n-th power ของจำนวนธรรมชาติที่ ไม่ซ้ำกัน (unique) ได้ ตัวอย่าง Input: number = 50, power = 2 Output: 3 วิธีที่เป็นไปได้สำหรับ 50 = 1²+7², 5²+5² (ไม่ได้เพราะซ้ำ), 1²+3²+... → จริงๆ มี 3 วิธี อัลกอริทึม: Recursion + Ba

  16. หาผู้ชนะการเลือกตั้งจากรายชื่อผู้ได้รับโหวตใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมหา ผู้ชนะการเลือกตั้ง จากอาร์เรย์ชื่อผู้สมัครที่ได้รับโหวต หากโหวตเท่ากัน ให้เลือกผู้มีชื่อเรียงลำดับอักษรก่อน (Lexicographically smaller) ตัวอย่าง Input: {A, B, C, B, A, C, D, D, A, B, D, B, A} Output: A (A และ B ได้ 4 โหวตเท่ากัน แต่ A อยู่ก่อน B ในลำดับอักษร

  17. หาตำแหน่งศูนย์ที่ควรพลิกเพื่อให้ได้ 1 ติดต่อกันมากที่สุดใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหา ดัชนีของศูนย์ (0) ที่ควรพลิกเป็น 1 เพื่อให้ได้ ลำดับ 1 ติดต่อกันยาวที่สุด ในอาร์เรย์บाइनนารี โดยกำหนดจำนวนศูนย์สูงสุดที่พลิกได้ (maxZeroes) อัลกอริทึม: Sliding Window (หน้าต่างเลื่อน) รักษาหน้าต่าง [start, end) ที่มีศูนย์ไม่เกิน maxZeroes ตัว ขยาย end เมื่อศูนย์ ≤ maxZe

  18. หา ΔX ที่บวกกับตัวเศษและตัวส่วนเพื่อแปลงเศษส่วน a/b ให้เป็น c/d ใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหาค่า ΔX ที่ทำให้สมการต่อไปนี้เป็นจริง: (a + ΔX) / (b + ΔX) = c / d การแก้สมการ คูณไขว้: d(a + ΔX) = c(b + ΔX) da + dΔX = cb + cΔX dΔX - cΔX = cb - da ΔX(d - c) = bc - ad ΔX = (bc - ad) / (d - c) ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; int findTh

  19. หาค่า k ที่ modulo กับทุกสมาชิกในอาร์เรย์ให้เหลือเท่ากันใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะหาจำนวน k ทั้งหมดที่ทำให้ arr[i] % k ให้ผลลัพธ์เท่ากันสำหรับทุก i ในอาร์เรย์ ตัวอย่าง Input: arr = {10, 4, 2} Output: 1 2 หลักการคณิตศาสตร์ y ให้ d = x - y x = y + d → x % k = (y + d) % k = y % k + d % k ดังนั้น d % k = 0 → k ต้องเป็นตัวหารของ d ขยายสู่อาร์เรย์: k ต้องเป

  20. หาผลรวมหลักของจำนวนจนเหลือ 1 หลัก (Digital Root) ใน C++

    บทนำ ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมหา Digital Root คือผลรวมของหลักของจำนวน ทำซ้ำจนได้เลข 1 หลัก (0-9) ตัวอย่าง Input: 4543 Output: 7 (4+5+4+3=16 → 1+6=7) วิธีที่ 1: วนลูปคำนวณโดยตรง 9) { if(n == 0) { n = sum; sum = 0; } sum += n % 10; n /

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:238/301  20-คอมพิวเตอร์/Page Goto:1 232 233 234 235 236 237 238 239 240 241 242 243 244