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

    คำอธิบายปัญหา อาร์เรย์ A เรียกว่า beautiful หากเป็น permutation ของ 1..N และสำหรับทุก i < j ไม่มี k ที่ i < k < j ทำให้ A[k] * 2 = A[i] + A[j] (คือ ไม่มีค่ากึ่งกลางทางคณิตศาสตร์ระหว่างคู่ใดคู่หนึ่ง) ตัวอย่าง: N=5 → [3,1,2,5,4] (อาจมีคำตอบหลายแบบ) วิธีแก้ปัญหา (Divide and Conquer / Recursive Constru

  2. Minimum Increment to Make Array Unique ใน C++

    คำอธิบายปัญหา กำหนดอาร์เรย์ A การเคลื่อนไหว 1 ครั้ง = เพิ่มค่า A[i] ขึ้น 1 ต้องการจำนวนการเคลื่อนไหวน้อยที่สุดเพื่อให้ค่าทั้งหมดไม่ซ้ำกัน ตัวอย่าง: [3,2,1,2,1,7] → 6 (กลายเป็น [3,4,1,2,5,7] หรือแบบอื่นที่ไม่ซ้ำ) วิธีแก้ปัญหา (Sort + Greedy) เรียงอาร์เรย์จากน้อยไปมาก วนจากซ้ายไปขวา: ถ้า A[i] <= A[i

  3. Bag of Tokens ใน C++

    คำอธิบายปัญหา มีพลังเริ่มต้น P, คะแนน 0, และถุงโทเคน แต่ละโทเคนมีค่า token[i] สามารถใช้ได้ 2 แบบ: Face up: จ่ายพลัง token[i] ได้ 1 คะแนน (ต้องมีพลังพอ) Face down: ได้พลัง token[i] เสีย 1 คะแนน (ต้องมีคะแนนอย่างน้อย 1) โทเคนแต่ละอันใช้ได้สูงสุด 1 ครั้ง ต้องการคะแนนสูงสุด ตัวอย่าง: tokens=[100,200,3

  4. Reveal Cards In Increasing Order ใน C++

    คำอธิบายปัญหา มีสำรับไพ่ ต้องการจัดลำดับไพ่ทำให้เมื่อเปิดตามกฎ: เปิดไพ่บนสุด → ย้ายไพ่บนสุดใหม่ไปด้านล่าง → ทำซ้ำ จนหมด ไพ่ที่เปิดออกมาจะเรียงจากน้อยไปมาก ต้องการหาลำดับเริ่มต้นของสำรับ ตัวอย่าง: [17,13,11,2,3,5,7] → [2,13,3,11,5,17,7] วิธีแก้ปัญหา (จำลองย้อนกลับด้วย Queue) เรียงไพ่จากน้อยไปมาก ใช

  5. Array of Doubled Pairs ใน C++

    คำอธิบายปัญหา กำหนดอาร์เรย์ A ความยาวคู่ ต้องการจัดเรียงใหม่ได้หรือไม่ ที่ A[2*i+1] = 2 * A[2*i] สำหรับทุก i ตัวอย่าง: [3,1,3,6] → false, [4,-2,2,-4] → true (จับคู่ -2&-4, 2&4) วิธีแก้ปัญหา (Greedy + Hash Map) นับความถี่แต่ละตัวเลข เรียงลำดับ key (จัดการลบได้ถูกต้อง) สำหรับแต่ละ key x (จากน้อยไปมา

  6. Prison Cells After N Days ใน C++

    คำอธิบายปัญหา มีห้องจำคุก 8 ห้องเรียงกัน แต่ละห้องมีผู้ติดคุก (1) หรือว่าง (0) ทุกวันสถานะเปลี่ยนตามกฎ: ห้องจะกลายเป็น 1 ถ้าห้องข้างเคียงทั้งสองเหมือนกัน (ทั้งคู่เป็น 1 หรือทั้งคู่เป็น 0) มิฉะนั้นเป็น 0 ต้องการหาสถานะหลังจาก N วัน ตัวอย่าง: [0,1,0,1,1,0,0,1], N=7 → [0,0,1,1,0,0,0,0] ข้อสังเกตสำคัญ

  7. Maximum Width Ramp ใน C++

    คำอธิบายปัญหา กำหนดอาร์เรย์ A of integers, ramp คือคู่ (i, j) ที่ i < j และ A[i] <= A[j] ความกว้าง = j - i ต้องการหาความกว้างสูงสุด ตัวอย่าง: [6,0,8,2,1,5] → 4 (i=1, j=5: A[1]=0, A[5]=5) วิธีแก้ปัญหา (Monotonic Stack) สร้าง stack เก็บ index ที่เป็น candidate สำหรับ i (ค่า A[i] ลดลงเรื่อยๆ) วนจากขว

  8. Numbers With Same Consecutive Differences ใน C++

    คำอธิบายปัญหา หาจำนวนเต็มบวกทั้งหมดที่มีความยาว N หลัก โดยความต่างสัมบูรณ์ระหว่างหลักติดกันทุกคู่เท่ากับ K ไม่อนุญาตให้มี leading zeros (ยกเว้นตัวเลข 0 เอง) ตัวอย่าง: N=3, K=7 → [181,292,707,818,929] (070 ไม่ได้เพราะ leading zero) วิธีแก้ปัญหา (DP / BFS) เริ่มจากหลักแรก 1-9 (ไม่สามารถเป็น 0 ได้) ส

  9. Longest Turbulent Subarray ใน C++

    คำอธิบายปัญหา Subarray ถือเป็น turbulent เมื่อเครื่องหมายเปรียบเทียบระหว่างสมาชิกติดกันสลับกันตลอด (มากกว่า/น้อยกว่าสลับกัน) ต้องการหาความยาว turbulent subarray สูงสุด 27<8) วิธีแก้ปัญหา (DP แบบ O(1) Space) เก็บความยาว turbulent subarray ที่ลงท้ายที่ i โดยพิจารณา 2 กรณี: A[i]) prevSmall: ความยาวท

  10. Time Based Key-Value Store ใน C++

    คำอธิบายปัญหา ออกแบบคลาส TimeMap ที่รองรับ 2 การดำเนินการ: set(key, value, timestamp): บันทึกค่าพร้อม timestamp get(key, timestamp): คืนค่าที่มี timestamp_prev <= timestamp และ timestamp_prev มากที่สุด หากไม่มีคืน ตัวอย่าง: set(foo,bar,1), get(foo,1)=bar, get(foo,3)=bar, set(foo,bar2,4), get(foo,

  11. String Without AAA or BBB ใน C++

    คำอธิบายปัญหา กำหนดจำนวนเต็ม A และ B ต้องการสร้างสตริง S ที่: ความยาว = A + B มี a จำนวน A ตัว และ b จำนวน B ตัว ไม่มี substring aaa หรือ bbb ตัวอย่าง: A=4, B=1 → aabaa วิธีแก้ปัญหา (Greedy) ตัวอักษรที่มากกว่า ให้วาง 2 ตัวติดกัน แล้วตามด้วยอีกตัวหนึ่งตัว (ถ้ายังเหลือ) ทำซ้ำจนความต่างน้อยกว่า 2 ส

  12. Satisfiability of Equality Equations ใน C++

    คำอธิบายปัญหา กำหนดอาร์เรย์สมการรูปแบบ a==b หรือ a!=b (a,b เป็นตัวอักษรพิมพ์เล็ก) ต้องการทราบว่าสามารถกำหนดค่าจำนวนเต็มให้ตัวแปรแต่ละตัวได้หรือไม่ เพื่อให้สมการทุกสมการเป็นจริง ตัวอย่าง: [a==b,b==c,a==c] → true วิธีแก้ปัญหา (Union-Find / Disjoint Set Union) สร้าง DSU สำหรับตัวอักษร 26 ตัว ผ่านสมกา

  13. Best Sightseeing Pair ใน C++

    คำอธิบายปัญหา กำหนดอาร์เรย์ A ของจำนวนเต็มบวก A[i] = ค่าของสถานที่ท่องเที่ยวที่ i ระยะห่างระหว่าง i และ j คือ j-i คะแนนของคู่ (i

  14. Binary String With Substrings Representing 1 To N ใน C++

    คำอธิบายปัญหา กำหนดสตริงไบนารี S และจำนวนเต็มบวก N ต้องการตรวจสอบว่าสำหรับทุกจำนวนเต็ม X จาก 1 ถึง N การแทนค่าในฐานสองของ X เป็น substring ของ S หรือไม่ ตัวอย่าง: S=0110, N=3 → true (1=1, 2=10, 3=11 ทั้งหมดอยู่ใน 0110) ข้อสังเกตสำคัญ ไม่จำเป็นต้องตรวจสอบทุกตัวเลข 1 ถึง N เพียงพอที่จะตรวจสอบ N/2 ถึง

  15. Convert to Base -2 ใน C++

    คำอธิบายปัญหา กำหนดจำนวนเต็ม N ต้องการแปลงเป็นสตริงฐาน -2 (Base -2) ที่ประกอบด้วย 0 และ 1 เท่านั้น ไม่มีศูนย์นำหน้า (ยกเว้นกรณีเป็น 0) ตัวอย่าง: 2 → 110 เพราะ (-2)² + (-2)¹ + (-2)⁰ = 4 - 2 + 1 = 3? รอสักครู่... 110 ในฐาน -2 = 1×(-2)² + 1×(-2)¹ + 0×(-2)⁰ = 4 - 2 + 0 = 2 ✓ 17 → 10001 = 1×(-2)⁴ + 0 + 0

  16. Number of Enclaves ใน C++

    คำอธิบายปัญหา กำหนดกริด 2D ที่แต่ละเซลล์เป็น 0 (น้ำ) หรือ 1 (บก) สามารถเดินจากบกไปบกได้ 4 ทิศทาง (บน ล่าง ซ้าย ขวา) ต้องการนับจำนวนเซลล์บกที่ ไม่สามารถเดินออกนอกขอบกริดได้ (enclaves) ตัวอย่าง: กริด 4x4 มี enclaves 3 เซลล์ วิธีแก้ปัญหา (DFS/BFS จากขอบ) ทำ DFS/BFS จากเซลล์บกที่อยู่บนขอบกริด (แถวแรก/

  17. Video Stitching ใน C++

    คำอธิบายปัญหา มีคลิปวิดีโอหลายคลิปจากงานแข่งขันที่ใช้เวลา T วินาที แต่ละคลิป clips[i] = [start, end] สามารถตัดคลิปได้อย่างอิสระ ต้องการหาจำนวนคลิปน้อยที่สุดที่สามารถต่อกันได้เพื่อครอบคลุม [0, T] หากไม่ได้ ให้คืน -1 ตัวอย่าง: clips=[[0,2],[4,6],[8,10],[1,9],[1,5],[5,9]], T=10 → 3 (ใช้ [0,2], [1,9], [

  18. Longest Arithmetic Sequence ใน C++

    คำอธิบายปัญหา กำหนดอาร์เรย์ A ของจำนวนเต็ม ต้องการหาความยาวของ arithmetic subsequence ที่ยาวที่สุด โดย arithmetic sequence คือลำดับที่ความต่างระหว่างสมาชิกติดกันคงที่ ตัวอย่าง: [9,4,7,2,10] → ผลลัพธ์ 3 (subsequence: [4,7,10] ความต่าง = 3) วิธีแก้ปัญหา (Dynamic Programming) ใช้ dp[i][diff] = ความยา

  19. Uncrossed Lines ใน C++

    คำอธิบายปัญหา มีตัวเลขสองแถว A และ B วาดเส้นเชื่อมระหว่าง A[i] และ B[j] ได้ก็ต่อเมื่อ A[i] == B[j] และเส้นไม่得以ตัดกัน (รวมถึงปลายเส้น) ต้องการหาจำนวนเส้นสูงสุดที่วาดได้ ตัวอย่าง: A=[1,4,2], B=[1,2,4] → ผลลัพธ์ 2 ข้อสังเกตสำคัญ ปัญหานี้เทียบเท่ากับการหา Longest Common Subsequence (LCS) ของอาร์เรย์ทั

  20. Minimum Score Triangulation of Polygon ใน C++

    คำอธิบายปัญหา กำหนดรูปหลายเหลี่ยมคAVE N ด้าน มีจุดยอด A[0] ถึง A[N-1]เรียงตามเข็มนาฬิกา ต้องการแบ่งสามเหลี่ยม (Triangulation) ได้ N-2 สามเหลี่ยม คะแนนของแต่ละสามเหลี่ยม = ผลคูณของเลขที่จุดยอด 3 จุด คะแนนรวม = ผลรวมคะแนนทุกสามเหลี่ยม ต้องการหาคะแนนรวมต่ำสุดที่เป็นไปได้ ตัวอย่าง: [1,2,3] → 6 (เพียงสาม

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