Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python
Python
  1. โปรแกรมตรวจสอบการแบ่ง String เป็นค่าต่อเนื่องลดลงใน Python

    ปัญหา สตริง s ตัวเลข בלבד แบ่งเป็น Substrings ≥ 2 ชิ้น ให้ค่าตัวเลขเป็น Non-increasing และต่างกันทีละ 1 ตรวจสอบว่าเป็นไปได้หรือไม่ ตัวอย่าง s = 080076 → True Split: [08, 007, 6] → Values: [8, 7, 6] ✓ อัลกอริทึม (DFS + Backtracking) DFS(index, prev_value): ลองตัด Substring เริ่มจาก Index ถ้า S

  2. โปรแกรมหา Maximum Subarray Min-Product ใน Python

    ปัญหา อาร์เรย์ nums หา Max Min-Product ของทุก Non-empty Subarray Min-Product = Min(Subarray) × Sum(Subarray) Mod 10^9+7 ตัวอย่าง nums = [2,3,4,3] → Output: 30 Subarray [3,4,3]: Min=3, Sum=10 → 3×10=30 อัลกอริทึม (Monotonic Stack + Prefix Sum) Append 0 ท้าย nums (Sentinel) Monotonic Increasing

  3. โปรแกรมนับวิธีแจกลูกอม n ลูกใน k ถุงใน Python

    ปัญหา n ลูกอม (Unique/ต่างกันทุกตัว) k ถุง แต่ละถุงต้องมี ≥ 1 ลูก หาจำนวนวิธีแจก (Mod ไม่ได้ระบุ แต่ควร Mod 10^9+7) ตัวอย่าง n=3, k=2 → Output: 3 Ways: {(1,2),(3)}, {(1),(2,3)}, {(2),(1,3)} อัลกอริทึม (Stirling Numbers of the Second Kind × k!) จำนวนวิธี = S(n, k) × k! โดย S(n,k) = Stirling Number

  4. โปรแกรมหาผลรวม Element ที่ห่างกันเท่ากันใน Array (Evenly Spaced) ใน Python

    ปัญหา อาร์เรย์ nums ขนาด n, Queries (p_i, q_i) ตอบ: Sum ของ nums[j] ที่ p_i ≤ j < n และ (j - p_i) หาร q_i ลงตัว Mod 10^9+7 ตัวอย่าง nums = [2,3,4,5,6,7,8,9,10], Queries = [(2,5),(7,3),(6,4)] Output: [13, 9, 8] Query (2,5): j=2,7 → nums[2]+nums[7] = 4+9 = 13 อัลกอริทึม (Sqrt Decomposition / Precomp

  5. โปรแกรมตรวจสอบการแปลงจุด (sx,sy) เป็น (tx,ty) ใน Python

    ปัญหา จุดเริ่มต้น (sx, sy) จุดเป้าหมาย (tx, ty) Move: (x, y) → (x, x+y) หรือ (x+y, y) ตรวจสอบว่าสามารถไปถึงได้หรือไม่ ตัวอย่าง (1,1) → (4,5): True Path: (1,1)→(2,1)→(3,1)→(4,1)→(4,5) อัลกอริทึม (Work Backwards - Euclidean Algorithm) tx → มาจาก (tx, ty-tx) คล้าย Euclidean GCD ตัวอย่างโค้ด (Recurs

  6. โปรแกรมเพิ่มความยาว Palindrome จาก Subsequence สองสตริงใน Python

    ปัญหา สองสตริง s, t เลือก Subsequence sub1 จาก s และ sub2 จาก t ต่อกัน (sub1 + sub2) หา Palindrome ยาวที่สุดได้ ตัวอย่าง s = hillrace, t = cargame → Output: 7 sub1 = race (จาก s), sub2 = car (จาก t) → racecar (Palindrome, Length 7) อัลกอริทึม (DP on Concatenated String) Concatenate: word = s +

  7. โปรแกรมตรวจสอบ Vertex ใน Undirected Graph มี Path ต่ำกว่ากำหนดหรือไม่ใน Python

    ปัญหา กราฟ Undirected มีน้ำหนัก Query(p, q, limit): มี Path จาก p ไป q ที่ Cost < limit หรือไม่ (≤ limit ก็ได้) ตัวอย่าง Graph: Edges กับ Weights Queries: (0,2,10)→False, (3,1,30)→True, (4,3,30)→True อัลกอริทึม (Offline + Union-Find + Sort) เรียง Edges ตาม Weight สร้าง Union-Find แบบ Persiste

  8. โปรแกรมหาจำนวน Chunk สูงสุดเพื่อทำให้ Array เรียงลำดับใน Python

    ปัญหา อาร์เรย์ nums แบ่งเป็น Partitions เรียงแต่ละ Partition แยกกัน แล้ว Concat ได้ Array เรียงลำดับ หาจำนวน Partitions สูงสุด ตัวอย่าง [3,2,4,5,5] → Output: 4 Partitions: [3,2], [4], [5], [5] → Sorted: [2,3], [4], [5], [5] → Concat: [2,3,4,5,5] ✓ อัลกอริทึม (Greedy + Sorted Comparison) Real =

  9. โปรแกรมหาความยาว Chunked Palindrome Decomposition สูงสุดใน Python

    ปัญหา กำหนด String text หา k สูงสุด ที่ text = a₁ + a₂ + ... + aₖ โดย aᵢ ≠ และ aᵢ = aₖ₊₁₋ᵢ (Palindrome ของ Chunks) ตัวอย่าง text = antaprezatepzapreanta → Output: 11 Split: a|nt|a|pre|za|tpe|za|pre|a|nt|a อัลกอริทึม (Greedy Two Pointers) Two Pointers: i จากซ้าย, j จากขวา ลองขยาย Chunk จากขอบ

  10. โปรแกรมทำให้ XOR ของทุก Segment ขนาด k เท่ากาศูนย์ใน Python

    ปัญหา อาร์เรย์ nums และค่า k XOR ของ Segment [left, right] = XOR ของ Element ทุกตัวในช่วง หาจำนวน Element น้อยที่สุดที่ต้องเปลี่ยน ให้ XOR ของทุก Segment ขนาด k = 0 ตัวอย่าง nums = [3,4,5,2,1,7,3,4,7], k = 3 → Output: 3 แก้: เปลี่ยน Index 2,3,4 → [3,4,7,3,4,7,3,4,7] ทุก Segment ขนาด 3 XOR = 0 อัลก

  11. โปรแกรมหาคะแนนสูงสุดของ Good Subarray ใน Python

    ปัญหา อาร์เรย์ nums และค่า k Score ของ Subarray (i,j) = min(nums[i..j]) × (j-i+1) Good Subarray: i ≤ k ≤ j หา Max Score ตัวอย่าง nums = [2,5,4,8,5,6], k = 3 → Output: 20 Optimal: (1,5) Min=4, Length=5 → 4×5=20 อัลกอริทึม (Two Pointers Expand from k) เริ่มจาก i=j=k, minNum = nums[k], ans = nums[

  12. โปรแกรมหาค่า Maximum ของ Valid Array ใน Python

    ปัญหา 2 และค่าแรก = ค่าสุดท้าย ลบ Element บางส่วนเพื่อให้ Valid หา Maximum Sum ของ Valid Array ตัวอย่าง nums = [3, 4, 5, 3, 4] → Output: 16 ลบ 3 ตัวแรก → [4, 5, 3, 4] Valid (4=4, len=4) Sum = 16 อัลกอริทึม (Prefix Sum + First/Last Occurrence) บันทึก First และ Last Occurrence ของแต่ละค่า Pref

  13. โปรแกรมหาคะแนนสูงสุดหลัง n Operations ใน Python

    ปัญหา อาร์เรย์ nums ขนาด 2n ทำ n Operations: Operation i (1-indexed) เลือก x,y ได้คะแนน i × gcd(x,y) นำ x,y ออก หาคะแนนสูงสุด ตัวอย่าง nums = [6,2,1,5,4,3] → Output: 14 Optimal: 1×gcd(1,5) + 2×gcd(2,4) + 3×gcd(3,6) = 1+4+9=14 อัลกอริทึม (DP + Bitmask) State: Bitmask ของตัวเลขที่ใช้แล้ว (2n ≤ 14

  14. โปรแกรมนับคู่ที่มี XOR อยู่ในช่วงใน Python

    ปัญหา กำหนดอาร์เรย์ nums และค่า l, r หาจำนวน Nice Pairs (i, j) ที่ i < j และ l ≤ (nums[i] XOR nums[j]) ≤ r ตัวอย่าง nums = [4,1,7,2], l = 2, r = 6 → Output: 6 Pairs: (1,0)=5, (1,2)=6, (1,3)=3, (0,3)=6, (0,2)=3, (2,3)=5 อัลกอริทึม (Bitwise Trie / DP on Bits) นับคู่ที่ XOR ≤ X โดยใช้ Frequency Count

  15. โปรแกรมเพิ่มจำนวน Nice Divisors ให้สูงสุดใน Python

    ปัญหา กำหนดจำนวนเฉพาะตัวประกอบ (Prime Factors) pf ต้องสร้างจำนวน n ที่มี Prime Factors ≤ pf เพื่อให้ Nice Divisors สูงสุด Nice Divisor = ตัวหารที่หารด้วยทุก Prime Factor ของ n ลงตัว ตัวอย่าง pf = 5 → Output: 6 n = 200 = 2³ × 5² Prime Factors: [2,2,2,5,5] (5 ตัว) Nice Divisors: [10,20,40,50,100,200]

  16. โปรแกรมหาจำนวนกลุ่มสูงสุดที่ได้โดนัทสดใน Python

    ปัญหา ร้านโดนัททำเป็น Batch ขนาด batchSize กลุ่มลูกค้าแต่ละกลุ่มต้องได้รับโดนัทครบก่อนกลุ่มถัดไป ลูกค้าแต่ละคนได้ 1 โดนัท กลุ่มจะ มีความสุข (Happy) ถ้าลูกค้าคนแรกได้โดนัทสด (ไม่ใช่เศษจากกลุ่มก่อน) จัดเรียงกลุ่มใหม่เพื่อเพิ่มจำนวนกลุ่ม Happy สูงสุด ตัวอย่าง batchSize = 4, groups = [2,1,8,4,3] → Outp

  17. โปรแกรมหาจำนวน GCD ที่แตกต่างของ Subsequence ทั้งหมดใน Python

    ปัญหา กำหนดอาร์เรย์ nums ค่าบวก หาจำนวน GCD ที่แตกต่างกันของทุก Non-empty Subsequence GCD ของลำดับ = ตัวหารร่วมมากที่สุดของทุกตัวในลำดับ ตัวอย่าง nums = [4,6,18] Subsequences: [4]=4, [6]=6, [18]=18, [4,6]=2, [4,18]=2, [6,18]=6, [4,6,18]=2 GCDs ที่แตกต่าง: {2,4,6,18} → 4 ค่า อัลกอริทึม (Sieve-like)

  18. โปรแกรมหาจำนวน Operation น้อยที่สุดเพื่อเรียงสตริงใน Python

    ปัญหา กำหนดสตริง s ทำ Operation ซ้ำจนเรียงลำดับ: 1. หา i สุดท้ายที่ s[i] < s[i-1] 2. หา j สุดท้ายที่ s[k] < s[i-1] สำหรับทุก k ใน [i, j] 3. สลับ s[i-1] และ s[j] 4. Reverse suffix ตั้งแต่ i หาจำนวน Operations (Mod 10^9+7) ตัวอย่าง s = ppqpp → 2 Operations 1: i=3, j=4 → swap s[2],s[4] → ppppq → rever

  19. โปรแกรมหา XOR Sum ของ Bitwise AND ทุกคู่ใน Python

    ปัญหา กำหนดอาร์เรย์ arr1, arr2 ต้องการ XOR Sum ของลิสต์ที่ประกอบด้วย arr1[i] AND arr2[j] สำหรับทุกคู่ (i, j) XOR Sum = XOR ของทุกค่าในลิสต์ ตัวอย่าง arr1 = [5,3,4], arr2 = [2,6] Pairs: [5&2, 5&6, 3&2, 3&6, 4&2, 4&6] = [0,4,2,2,0,4] XOR Sum = 0⊕4⊕2⊕2⊕0⊕4 = 0 ข้อสังเกตสำคัญ (Bitwise Property) XOR Su

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:366/451  20-คอมพิวเตอร์/Page Goto:1 360 361 362 363 364 365 366 367 368 369 370 371 372