Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. Menu Driven C++ Program for a Simple Calculator

    คำอธิบาย โปรแกรมเครื่องคิดเลขแบบเมนู รองรับการดำเนินการ: บวก, ลบ, คูณ, หาร, หา GCD (HCF), หา LCM ตัวอย่างโค้ด = 1 && choice <= 6) calculate(choice, a, b); } while(choice != 7); return 0; } ตัวอย่างการทำงาน Enter two numbers: 12 18 === Simple Calculator === 1. Addition (Sum) 2. Subtrac

  2. Maximum of all Subarrays of size k using set ใน C++ STL

    คำอธิบาย หาผลรวมของค่าสูงสุดในทุก subarray ขนาด k โดยใช้ set (balanced BST) เพื่อรักษาค่าสูงสุดของ sliding window วิธีทำ ใช้ set<pair<int,int>> เก็บ {value, index} เรียงตาม value แทรก k ตัวแรก สไลด์ window: ลบตัวเก่าออก แทรกตัวใหม่เข้า ค่าสูงสุด = *set.rbegin() (iterator สุดท้าย) ตัว

  3. map equal_range() ใน C++ STL

    คำอธิบาย ฟังก์ชัน equal_range() ใน C++ STL map คืนค่าเป็น pair ของ iterator ที่กำหนดช่วง (range) ของ key ที่เท่ากับค่าที่กำหนด เนื่องจาก map ไม่อนุญาต key ซ้ำ ช่วงนี้จะมีขนาด 0 หรือ 1 first= key) second key) ตัวอย่างโค้ด second << endl; // ถ้า key ไม่อยู่ใน map auto range2 = mp

  4. Score After Flipping Matrix ใน C++

    คำอธิบายปัญหา เมทริกซ์ A ค่า 0/1 สามารถพลิกแถวหรือคอลัมน์ได้ (0↔1) หลังจากพลิกแล้ว แต่ละแถวอ่านเป็น binary number คะแนน = ผลรวม ต้องการคะแนนสูงสุด ตัวอย่าง: [[0,0,1,1],[1,0,1,0],[1,1,0,0]] → 39 วิธีแก้ปัญหา (Greedy) คอลัมน์แรก: พลิกแถวที่มี 0 ให้กลายเป็น 1 (คอลัมน์แรกมีน้ำหนักสูงสุด 2^(m-1)) 0: น

  5. Prime Palindrome ใน C++

    คำอธิบายปัญหา = N ตัวอย่าง: N=13 → 101 (11 ก็เป็นแต่ < 13) ข้อสังเกตสำคัญ Palindrome เลขคู่หลัก (ยกเว้น 11) หาร 11 ลงตัว → ไม่ใช่ prime สร้าง palindrome เลขคี่หลัก: กึ่งแรก + reverse(กึ่งแรกโดยตัดตัวสุดท้าย) เช่น 123 → 12321 ตัวอย่างโค้ด C++ #include <bits/stdc++.h> using namespace std; c

  6. Reordered Power of 2 ใน C++

    คำอธิบายปัญหา กำหนดจำนวนเต็มบวก N จัดเรียงตัวเลขใหม่ได้ (ไม่มี leading zero) ตรวจสอบว่าสามารถจัดเป็น power of 2 ได้หรือไม่ ตัวอย่าง: 46 → true (จัดเป็น 64 = 2⁶) วิธีแก้ปัญหา (Digit Count Signature) สร้าง signature ของตัวเลข: นับจำนวนตัวเลข 0-9 (เข้ารหัสเป็น int) คำนวณ signature ของ N เปรียบเทียบกั

  7. Length of Longest Fibonacci Subsequence ใน C++

    คำอธิบายปัญหา =3 และ X[i] + X[i+1] = X[i+2] สำหรับทุก i กำหนดอาร์เรย์ A เพิ่มขึ้นอย่างเคร่งครัด ต้องการความยาว longest Fibonacci-like subsequence (ไม่ต้องติดกัน) ตัวอย่าง: [1,2,3,4,5,6,7,8] → 5 ([1,2,3,5,8]) วิธีแก้ปัญหา (DP + Hash Map) dp[i][j] = ความยาว Fibonacci-like subsequence สูงสุดที่ลงท้าย

  8. Koko Eating Bananas ใน C++

    คำอธิบายปัญหา มี N กองกล้วย piles[i] ลูก Koko กินได้ K ลูก/ชั่วโมง เลือกกองกินจนหมดกองนั้นก่อนจึงเปลี่ยนกอง ถ้ากองน้อยกว่า K กินหมดในชั่วโมงนั้น ประตูจะเปิดใน H ชั่วโมง ต้องการ K ต่ำสุดที่กินหมดทัน ตัวอย่าง: [3,6,7,11], H=8 → K=4 วิธีแก้ปัญหา (Binary Search) K อยู่ในช่วง [1, max(piles)] ตรวจสอบ K

  9. Stone Game ใน C++

    คำอธิบายปัญหา Alex และ Lee เล่นเกมหิน กองหินจำนวนคู่เรียงเป็นแถว แต่ละกองมีหิน piles[i] สลับกันหยิบกองแรกหรือกองสุดท้าย เล่นอย่างเหมาะสมที่สุด Alex เริ่มก่อน ต้องการทราบว่า Alex ชนะได้หรือไม่ ตัวอย่าง: [5,3,4,5] → true (Alex หยิบ 5 แรก แล้วชนะได้) ข้อสังเกตสำคัญ เนื่องจากจำนวนกองเป็นคู่ และทั้งคู่เ

  10. Boats to Save People ใน C++

    คำอธิบายปัญหา มีคนแต่ละคนน้ำหนัก people[i] เรือแต่ละลำรับได้สูงสุด 2 คน และน้ำหนักรวม <= limit ต้องการหาจำนวนเรือน้อยที่สุด ตัวอย่าง: [3,2,1,2], limit=3 → 3 เรือ ([1,2], [2], [3]) วิธีแก้ปัญหา (Two Pointers + Greedy) เรียงน้ำหนักจากน้อยไปมาก two pointers: i=ซ้าย (เบา), j=ขวา (หนัก) ถ้า people[i] +

  11. Spiral Matrix III: เมทริกซ์เกลียว 3 ใน C++

    ปัญหา กริด R × C เริ่มที่ (r0, c0) หน้าทิศตะวันออก เดินแบบ Spiral (Clockwise) เยี่ยมทุกเซลล์ในกริด (อาจเดินนอกกริดไปก่อน) คืนลำดับ Seat ที่เยี่ยม แนวคิด: Simulate Spiral Walk Direction Vectors dir = 0: East (0, +1) dir = 1: South (+1, 0) dir = 2: West (0, -1) dir = 3: North (-1, 0) Step Lengt

  12. Possible Bipartition ใน C++

    คำอธิบายปัญหา มี N คน ต้องการแบ่งเป็น 2 กลุ่ม โดยมีคู่ที่เกลียดกัน (dislikes[i]=[a,b]) ไม่อนุญาตให้อยู่กลุ่มเดียวกัน ต้องการทราบว่าแบ่งได้หรือไม่ ตัวอย่าง: N=4, dislikes=[[1,2],[1,3],[2,4]] → true (กลุ่ม [1,4] และ [2,3]) วิธีแก้ปัญหา (Graph Bipartite Check - DFS) สร้างกราฟ adjacency list จาก disli

  13. Bitwise ORs of Subarrays ใน C++

    คำอธิบายปัญหา กำหนดอาร์เรย์ A ของจำนวนเต็มไม่ติดลบ สำหรับทุก subarray เรียงติดกัน คำนวณ bitwise OR ของสมาชิกทั้งหมด ต้องการจำนวนผลลัพธ์ที่แตกต่างกัน ตัวอย่าง: [1,1,2] → subarrays: [1],[1],[2],[1,1],[1,2],[1,1,2] → ORs: 1,1,2,1,3,3 → distinct: {1,2,3} → 3 วิธีแก้ปัญหา (Set DP) curr = set ของ ORs ขอ

  14. RLE Iterator ใน C++

    คำอธิบายปัญหา สร้าง iterator สำหรับ run-length encoded sequence A โดย A[even] = จำนวนครั้ง, A[odd] = ค่า ฟังก์ชัน next(n): ข้าม n ตัว คืนค่าตัวสุดท้ายที่ข้าม ถ้าไม่พอคืน -1 ตัวอย่าง: A=[3,8,0,9,2,5] แทน [8,8,8,5,5], next(2)=8, next(1)=8, next(1)=5, next(2)=-1 วิธีแก้ปัญหา เก็บ index ปัจจุบัน (ชี้ท

  15. Smallest Range II ใน C++

    คำอธิบายปัญหา กำหนดอาร์เรย์ A และค่า K สำหรับแต่ละ A[i] เลือกบวก K หรือลบ K ได้เพียงครั้งเดียว ได้อาร์เรย์ B ต้องการให้ max(B) - min(B) น้อยที่สุด ตัวอย่าง: A=[0,10], K=2 → B=[2,8] → diff=6 วิธีแก้ปัญหา (Sort + Greedy) เรียง A จากน้อยไปมาก คำตอบเริ่มต้น = A[n-1] - A[0] (ไม่บวกลบอะไร) พิจารณาแบ่งที

  16. Online Election ใน C++

    คำอธิบายปัญหา มีการโหวต persons[i] ที่เวลา times[i] ต้องการตอบคำถาม: ที่เวลา t ใครนำหน้าสุด (ถ้าเท่ากัน คนที่โหวตล่าสุดนำ) ตัวอย่าง: persons=[0,1,1,0,0,1,0], times=[0,5,10,15,20,25,30], query q(3)=0, q(12)=1, q(25)=1, q(15)=0, q(24)=0, q(8)=1 วิธีแก้ปัญหา (Precompute + Binary Search) ประมวลผลโหวตต

  17. Sort an Array ใน C++

    คำอธิบายปัญหา เรียงลำดับอาร์เรย์จำนวนเต็มจากน้อยไปมาก ตัวอย่าง: [5,2,3,1] → [1,2,3,5] วิธีแก้ปัญหา (Quick Sort Implementation) ใช้ Quick Sort แบบ recursive พร้อม partition แบบ Lomuto partition: เลือก pivot = ค่าสุดท้าย, ย้ายค่าน้อยกว่า pivot ไปซ้าย recursive sort ส่วนซ้ายและขวา ตัวอย่างโค้ด C++

  18. Partition Array into Disjoint Intervals ใน C++

    คำอธิบายปัญหา แบ่งอาร์เรย์ A เป็น left และ right ที่: ทุกค่าใน left <= ทุกค่าใน right left และ right ไม่ว่าง left มีขนาดน้อยที่สุด ตัวอย่าง: [5,0,3,8,6] → 3 (left=[5,0,3], right=[8,6]) วิธีแก้ปัญหา คำนวณ maxFromLeft[i] = max(A[0..i]) คำนวณ minFromRight[i] = min(A[i..n-1]) = maxFromLeft[i-1] ตั

  19. Flip String to Monotone Increasing ใน C++

    คำอธิบายปัญหา สตริง 0 และ 1 จะเป็น monotone increasing ถ้าประกอบด้วย 0 บางส่วนตามด้วย 1 บางส่วน (อาจว่างได้) สามารถพลิก 0↔1 ได้ ต้องการจำนวนการพลิกน้อยที่สุด ตัวอย่าง: 010110 → 2 (กลายเป็น 011111 หรือ 000111) วิธีแก้ปัญหา (One Pass Greedy) นับ oneCount = จำนวน 1 ที่ผ่านมา flipCount = จำนวนการพลิกท

  20. Binary Subarrays With Sum ใน C++

    คำอธิบายปัญหา กำหนดอาร์เรย์ A ของ 0 และ 1 ต้องการหาจำนวน subarray ที่มีผลรวมเท่ากับ S ตัวอย่าง: [1,0,1,0,1], S=2 → 4 subarrays วิธีแก้ปัญหา (Sliding Window / Prefix Sum) ใช้ฟังก์ชัน atMost(x) = จำนวน subarray ที่ผลรวม <= x คำตอบ = atMost(S) - atMost(S-1) x ย่อซ้าย สะสมจำนวน subarray ที่จบที่ i

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