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

    คำอธิบายโจทย์ กำหนดจุด A(x1,y1) และ B(x2,y2) เป็นปลายเส้นตรง หาจุดกึ่งกลาง (midpoint) ตัวอย่าง A(4,-5), B(-2,6) → Midpoint = (1, 0.5) สูตร: ((x1+x2)/2, (y1+y2)/2) โค้ดตัวอย่าง #include <iostream> using namespace std; int main() { float point[2][2] = {{4, -5}, {-2, 6}}; float midX =

  2. โปรแกรมหาค่าต่ำสุดและสูงสุดในอาร์เรย์ C++

    คำอธิบายโจทย์ ให้อาร์เรย์ arr[] ขนาด n หาค่าต่ำสุด (min) และสูงสุด (max) ของอาร์เรย์ ตัวอย่าง Input: arr[] = {2, 1, 6, 9, 4, 10, 15, 21} Output: max = 21, min = 1 วิธีแก้ปัญหา 1. วิธี Iterative (วนลูป) กำหนด max = min = arr[0] แล้ววนเปรียบเทียบแต่ละค่า #include <iostream> using namespace st

  3. Odd Even Jump ใน C++

    คำอธิบายโจทย์ อาร์เรย์ A กระโดดจาก i ไป j (i

  4. Unique Paths III ใน C++

    คำอธิบายโจทย์ กริด 2D: 1=start, 2=end, 0=ว่าง, -1=อุปสรรค หาเส้นทาง 4 ทิศทางจาก start ถึง end เดินครบทุกช่องว่างทีละ 1 ครั้ง ตัวอย่าง Grid 3×4 → Output: 2 พบ 2 เส้นทางที่ครอบคลุมทุกช่อง 0 ทีละ 1 ครั้ง วิธีแก้ปัญหา DFS + Backtracking: นับช่องว่าง (empty) รวม start DFS จาก start mark visited = -1

  5. กู้คืนต้นไม้จาก Preorder Traversal ใน C++

    คำอธิบายโจทย์ Preorder DFS: แสดง D dash (D=depth) ตามด้วยค่าโหนด ราก depth=0 ลูกเดียวเป็น left child เสมอ กู้คืนต้นไม้จาก string S ตัวอย่าง S = 1-2--3--4-5--6--7 → Tree structure Inorder: 3 2 4 1 6 5 7 วิธีแก้ปัญหา ใช้ Stack ติดตามโหนดปัจจุบัน: อ่าน dashes นับ depth (lvl) อ่านตัวเลข (num) Pop st

  6. จำนวนคำที่ถูกต้องสำหรับแต่ละปริศนาใน C++

    คำอธิบายโจทย์ คำถูกต้องต่อ puzzle ถ้า: 1) มีตัวอักษรแรกของ puzzle 2) ทุกตัวอักษรในคำอยู่ใน puzzle หาจำนวนคำถูกต้องสำหรับแต่ละ puzzle ตัวอย่าง words = [aaaa,asas,able,ability,actt,actor,access] puzzles = [aboveyz,abrodyz,abslute,absoryz,actresz,gaswxyz] Output: [1,1,3,2,4,0] วิธีแก้ปัญหา Bitmask +

  7. จำนวนวิธีอยู่เดิมหลังก้าวใน C++

    คำอธิบายโจทย์ อาร์เรย์ขนาด arrLen เริ่ม index 0 แต่ละขั้นตอน: ซ้าย, ขวา, หรืออยู่ที่เดิม หาว่าหลัง steps ก้าว อยู่ index 0 ได้กี่วิธี mod 1e9+7 ตัวอย่าง steps=3, arrLen=2 → Output: 4 วิธี: [R,L,S], [S,R,L], [R,S,L], [S,S,S] วิธีแก้ปัญหา DP 2 มิติ + Space Optimization (rolling array): dp[step%2][

  8. ผลรวมเส้นทางตกน้อยที่สุด II ใน C++

    คำอธิบายโจทย์ กริดสี่เหลี่ยม เลือก 1 ตัวต่อแถว ต้องไม่ใช่คอลัมน์เดียวกับแถวติดกัน หาผลรวมน้อยที่สุด ตัวอย่าง arr = [[1,2,3],[4,5,6],[7,8,9]] → Output: 13 เส้นทาง [1,5,7] = 13 (แถว0คอลัมน์0, แถว1คอลัมน์1, แถว2คอลัมน์0) วิธีแก้ปัญหา DP แบบ Bottom-up พร้อม optimization: แถว i ใช้ค่าจากแถว i-1 คำนวณ

  9. เส้นทางสั้นที่สุดในกริดมีการกำจัดอุปสรรคใน C++

    คำอธิบายโจทย์ กริด m×n ค่า 0=ว่าง 1=บล็อก เดิน 4 ทิศทาง ได้กำจัดอุปสรรคสูงสุด k ตัว หา steps น้อยสุดจาก (0,0) ถึง (m-1,n-1) ไม่ได้คืน -1 ตัวอย่าง grid = [[0,0,0],[1,1,0],[0,0,0],[0,1,1],[0,0,0]], k=1 → Output: 6 กำจัดอุปสรรคที่ (3,2) ทำให้สั้นลงจาก 10 เป็น 6 วิธีแก้ปัญหา BFS 3 มิติ State: (x, y,

  10. ลูกอมสูงสุดจากกล่องใน C++

    คำอธิบายโจทย์ มี n กล่อง แต่ละกล่อง: [status, candies, keys, containedBoxes] status=1 เปิด, 0 ปิด เริ่มจาก initialBoxes หาลูกอมมากที่สุดที่เก็บได้ ตัวอย่าง status=[1,0,1,0], candies=[8,6,5,101], keys=[[],[],[1],[]], containedBoxes=[[1,2],[3],[],[]], initialBoxes=[0] → 19 กล่อง 0: 8 ลูกอม + กล่อง 1

  11. จำนวนเส้นทางคะแนนสูงสุดใน C++

    คำอธิบายโจทย์ บอร์ดสี่เหลี่ยม เริ่ม S มุมล่างขวา ถึง E มุมบนซ้าย เดินได้: บน, ซ้าย, ทแยงบนซ้าย เฉพาะไม่ใช่ X หา: [max_sum, จำนวนเส้นทางที่ได้ max_sum] mod 1e9+7 ตัวอย่าง board = [E12,1X1,21S] → Output: [1,2] วิธีแก้ปัญหา DP 3 มิติ dp[i][j][0]=max_sum, dp[i][j][1]=count จาก (i,j) ไป (0,0): เริ่ม

  12. ปริศนาคณิตศาสตร์ตัวอักษร (Verbal Arithmetic) ใน C++

    คำอธิบายโจทย์ สมการคำพูด: words ด้านซ้าย + ... = result ด้านขวา แมปตัวอักษรเป็นตัวเลข 0-9 ตัวต่างต้องต่างตัวเลข ห้าม leading zero ตรวจสอบว่ามีคำตอบหรือไม่ ตัวอย่าง words = [SEND,MORE], result = MONEY → True แมป: S=9, E=5, N=6, D=7, M=1, O=0, R=8, Y=2 → 9567+1085=10652 วิธีแก้ปัญหา Backtracking คอ

  13. Substring Echo ที่แตกต่างกันใน C++

    คำอธิบายโจทย์ หาจำนวน substring ที่ไม่ซ้ำกัน ซึ่งเป็นการต่อ string กับตัวเอง (s = t+t) เช่น ello = el+lo ไม่ใช่ แต่ elloello = ello+ello ใช่ ตัวอย่าง elloelloello → Output: 5 Substrings: ello, lloe, loel, oell (และอีก 1 ตัว) วิธีแก้ปัญหา ใช้ Rolling Hash (Rabin-Karp) ตรวจสอบ substring ความยาวคู่:

  14. ระยะทางพิมพ์คำต่ำสุดด้วยสองนิ้วใน C++

    คำอธิบายโจทย์ แป้นพิมพ์ 6×5 ตัวอักษร A-Z พิกัด A=(0,0), B=(0,1)... Z=(4,1) ระยะทาง = Manhattan distance หาระยะทางรวมน้อยที่สุดพิมพ์คำด้วย 2 นิ้ว เริ่มที่ไหนก็ได้ ตัวอย่าง HAPPY → Output: 6 (ในโค้ดทดสอบ HELLO ได้ 4) วิธีแก้ปัญหา ใช้ DP + Memoization (Top-down): State: (x1,y1,x2,y2,idx) = ตำแหน่งน

  15. ก๊อกน้ำขั้นต่ำเพื่อรดน้ำสวนใน C++

    คำอธิบายโจทย์ สวน 1 มิติ ตำแหน่ง 0 ถึง n มีก๊อก n+1 ตัวที่ตำแหน่ง 0..n ก๊อก i รดน้ำได้ [i-ranges[i], i+ranges[i]] หาจำนวนก๊อกน้อยที่สุดที่เปิดเพื่อครอบคลุมทั้งสวน ไม่ได้คืน -1 ตัวอย่าง n=5, ranges=[3,4,1,1,1,0] → Output: 1 ก๊อก index 1 ครอบคลุม [-3,5] ครอบคลุมทั้งสวน วิธีแก้ปัญหา (Greedy + Interv

  16. กลับลำดับ Subarray เพื่อเพิ่มค่าอาร์เรย์สูงสุดใน C++

    คำอธิบายโจทย์ ค่าของอาร์เรย์ = Σ|nums[i]-nums[i+1]| สามารถเลือก subarray ใดๆ 1 ช่วงแล้วกลับลำดับได้ 1 ครั้ง หาค่าสูงสุดที่เป็นไปได้ ตัวอย่าง nums = [1,5,4,2,3] → Output: 10 วิธีแก้ปัญหา ค่าพื้นฐาน = Σ|a-b| การกลับ subarray ผลกระทบแค่ขอบเขต 2 จุด: ขอบซ้าย: |nums[0]-b| - |a-b| (b=nums[i+1]) ขอบขวา

  17. Jump Game V ใน C++

    คำอธิบายโจทย์ arr[k] สำหรับ k ระหว่าง i,j เริ่มจาก index ใดก็ได้ หาจำนวน index สูงสุดที่เยี่ยมชมได้ ตัวอย่าง arr = [6,4,14,6,8,13,9,7,10,6,12], d=2 → Output: 4 เส้นทาง: 10→8→6→7 (index 10→8→6→7) วิธีแก้ปัญหา ใช้ DP + Memoization (Top-down): dp[idx] = จำนวน index สูงสุดที่เยี่ยมชมได้เริ่มจาก idx

  18. Jump Game IV ใน C++

    คำอธิบายโจทย์ มีอาร์เรย์ arr เริ่มที่ index 0 กระโดดได้ 3 แบบ: i+x, i-x (ในขอบเขต), หรือ j ที่ arr[i]==arr[j] และ i!=j หาจำนวนขั้นตอนน้อยที่สุดไปถึง index สุดท้าย ตัวอย่าง arr = [20,-5,-5,25,20,5,5,5,1,25] → Output: 3 เส้นทาง: 0 → 4 → 3 → 9 (กระโดดค่าเท่ากัน 20, แล้ว 25, แล้ว 25) วิธีแก้ปัญหา ใช้

  19. สร้างอาร์เรย์เป้าหมายด้วยผลรวมหลายๆ ใน C++

    คำอธิบายโจทย์ เริ่มจากอาร์เรย์ A ที่ทุกค่าเป็น 1 ทำซ้ำ: หาผลรวม x ของทุกค่าใน A, เลือก index i แล้วตั้ง A[i] = x ถามว่าสามารถสร้าง target array ได้หรือไม่ ตัวอย่าง target = [3,9,5] → True ขั้นตอน: [1,1,1] sum=3 → [3,1,1] sum=5 → [3,1,5] sum=9 → [3,9,5] วิธีแก้ปัญหา (ย้อนกลับ) คำนวณผลรวมทั้งหมดขอ

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:185/301  20-คอมพิวเตอร์/Page Goto:1 179 180 181 182 183 184 185 186 187 188 189 190 191