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

    คำอธิบายโจทย์ มี n คำสั่งซื้อ แต่ละคำสั่งมีการรับ (Pickup) และส่ง (Delivery) ต้องนับจำนวนลำดับที่ถูกต้องที่ delivery[i] ต้องอยู่หลัง pickup[i] เสมอ ผลลัพธ์ modulo 10^9+7 ตัวอย่าง n = 2 → Output: 6 ลำดับที่ถูกต้อง: (P1,P2,D1,D2), (P1,P2,D2,D1), (P1,D1,P2,D2), (P2,P1,D1,D2), (P2,P1,D2,D1), (P2,D2,P1

  2. เลขคูณของ 3 ที่มากที่สุดใน C++

    คำอธิบายโจทย์ กำหนดอาร์เรย์ของตัวเลข (digits) ให้หาเลขคูณของ 3 ที่มากที่สุดที่สามารถสร้างได้โดยการนำตัวเลขมาเรียงต่อกันในลำดับใดก็ได้ คำตอบอาจใหญ่มาก จึงคืนค่าเป็น string หากไม่มีคำตอบให้คืน string ว่าง ตัวอย่าง Input: [7,2,8] → Output: 87 (เพราะ 87 หาร 3 ลงตัว และมากที่สุด) วิธีแก้ปัญหา จัดกลุ่

  3. ผลรวมสูงสุดของ BST ในต้นไม้แบบทวิภาคใน C++

    คำอธิบายโจทย์ กำหนดให้มีต้นไม้แบบทวิภาค (binary tree) ให้หาผลรวมสูงสุดของโหนดทั้งหมดใน subtree ใดๆ ที่เป็น Binary Search Tree (BST) ได้ ตัวอย่าง ผลลัพธ์คือ 20 ซึ่งเป็นผลรวมของโหนดใน BST ที่เลือก วิธีแก้ปัญหา ใช้ Post-order traversal (DFS) พร้อมเก็บข้อมูลของแต่ละ subtree: sz: ขนาดของ subtree min

  4. ตำแหน่งของกบหลังจาก T วินาทีใน C++

    คำอธิบายโจทย์ สมมติว่าเรามีต้นไม้แบบไม่มีทิศทาง (undirected tree) ที่ประกอบด้วย n จุดยอด (vertices) หมายเลข 1 ถึง n กบเริ่มกระโดดจากจุดยอด 1 กบสามารถกระโดดจากจุดยอดปัจจุบันไปยังจุดยอดที่ยังไม่ได้เยี่ยมชมและติดกันได้ในเวลา 1 วินาที กบไม่สามารถกระโดดกลับไปยังจุดยอดที่เคยเยี่ยมชมแล้ว หากมีหลายทางเลือก

  5. Maximum Performance of a Team: ประสิทธิภาพสูงสุดของทีมใน C++

    ปัญหา มีวิศวกร n คน แต่ละคนมี speed[i] และ efficiency[i] เลือกทีมสูงสุด k คน เพื่อให้ Performance = (Sum of speeds) × (Min efficiency) สูงสุด คำตอบ modulo 10^9 + 7 ตัวอย่าง: n=6, speed=[1,5,8,2,10,3], efficiency=[9,7,2,5,4,3], k=2 → เลือกวิศวกร speed=10,eff=4 และ speed=5,eff=7 → (10+5) × min(4,7) =

  6. Pizza With 3n Slices: เลือกชิ้นพิซซ่าผลรวมสูงสุดใน C++

    ปัญหา พิซซ่า 3n ชิ้นเรียงเป็นวงกลม คุณและเพื่อน 2 คน สลับกันหยิบ: 1. คุณหยิบชิ้นใดก็ได้ 2. ออมลหยิบชิ้นข้างหน้า (Counter-clockwise) 3. บีمالหยิบชิ้นข้างหลัง (Clockwise) ซ้ำจนหมด หาผลรวมขนาดชิ้นที่คุณได้สูงสุด ตัวอย่าง: [9,8,6,1,1,8] (n=2) → คำตอบ: 16 (หยิบ 8, 8) ข้อสังเกตสำคัญ เนื่องจากเพื่อนหยิบช

  7. Longest Happy Prefix: คำนำหน้าที่ยาวที่สุดที่เป็นคำท้ายใน C++

    ปัญหา กำหนดสตริง s หา Happy Prefix ที่ยาวที่สุด โดย Happy Prefix คือ Prefix ที่ไม่ว่าง และเป็น Suffix ด้วย (ยกเว้นสตริงทั้งหมด) ตัวอย่าง: madam → Prefixes: m, ma, mad, mada Suffixes: m, am, dam, adam → ตรงกันที่ m → คำตอบ: m แนวคิด: KMP Prefix Function (LPS Array) LPS (Longest Prefix Suffix) Array

  8. Find All Good Strings: นับสตริงที่ดีใน C++

    ปัญหา กำหนด s1, s2 (ความยาว n) และสตริง evil หาจำนวนสตริง good ที่: ความยาว = n s1 ≤ good ≤ s2 (Lexicographically) ไม่มี evil เป็น Substring คำตอบ modulo 10^9 + 7 ตัวอย่าง: n=2, s1=bb, s2=db, evil=a → 51 วิธี แนวคิด: DP + KMP Automaton (Aho-Corasick สำหรับ Pattern เดียว) State dp[pos][matched_l

  9. Reducing Dishes: เพิ่มประสิทธิภาพ Like-time Coefficient ใน C++

    ปัญหา เชฟมีจานอาหาร n จาน แต่ละจานมีระดับความพึงพอใจ satisfaction[i] การทำจานหนึ่งใช้เวลา 1 หน่วย Like-time coefficient ของจานที่ทำเป็นลำดับที่ t คือ t × satisfaction[i] สามารถทำจานในลำดับใดก็ได้ และ สามารถทิ้งจานบางจานได้ หาผลรวม Like-time coefficient สูงสุด ตัวอย่าง: [-1,-7,0,6,-7] → ทิ้ง -7 ตัวท

  10. Stone Game III: เกมกองหินใน C++

    ปัญหา อмалและบีمالเล่นเกมกองหินที่เรียงเป็นแถว แต่ละกองมีค่า (stoneValue) สลับกันหยิบ 1-3 กองจากด้านหน้า คะแนน = ผลรวมค่ากองที่หยิบ ใครคะแนนมากกว่าชนะ (ออมลเริ่มก่อน) ทั้งคู่เล่น Optimally หาผลลัพธ์: Amal, Bimal, หรือ Tie ตัวอย่าง: [1,2,3,7] → Bimal ชนะ (ออมลหยิบ 1+2+3=6, บีمالหยิบ 7) แนวคิด: DP จ

  11. จำนวนวิธีทาสีกริด N×3 ใน C++

    ปัญหา กริดขนาด n × 3 ทาสีแต่ละเซลล์ด้วย 3 สี (แดง, เหลือง, เขียว) โดย เซลล์ติดกันไม่ bolehสีเดียวกัน (ติดกัน = แนวนอนหรือแนวตั้ง) หาจำนวนวิธีทาสี modulo 10^9 + 7 ตัวอย่าง: n = 1 → 12 วิธี การวิเคราะห์รูปแบบแถว แต่ละแถวมี 3 เซลล์ รูปแบบที่ถูกต้องมี 2 ประเภท: Type 123 (ABA pattern): สี 3 สีต่างกันห

  12. Restore The Array: นับวิธีกู้คืนอาร์เรย์จากสตริงใน C++

    ปัญหา มีสตริง s ที่เกิดจากการพิมพ์อาร์เรย์ตัวเลขติดกัน (ไม่มี space) โดยแต่ละตัวเลขอยู่ในช่วง [1, k] หาจำนวนวิธีแบ่งสตริงกลับเป็นอาร์เรย์ที่ถูกต้อง คำตอบ modulo 10^9 + 7 ตัวอย่าง: s = 1318, k = 2000 → 8 วิธี: [1318], [131,8], [13,18], [1,318], [1,3,18], [1,31,8], [13,1,8], [1,3,1,8] แนวคิด: Dynam

  13. Constrained Subsequence Sum: ผลรวมลำดับย่อยสูงสุดภายใต้เงื่อนไขระยะห่างใน C++

    ปัญหา กำหนดอาร์เรย์ nums และจำนวนเต็ม k หาผลรวมสูงสุดของ Non-empty Subsequence ที่สำหรับคู่ติดกันใดๆ ในลำดับย่อย nums[i], nums[j] (โดย i < j) ต้องมี j - i <= k ตัวอย่าง: nums = [10,2,-9,5,19], k = 2 → คำตอบ = 36 (ลำดับย่อย: [10, 2, 5, 19]) แนวคิด: DP + Monotonic Deque (Sliding Window Maximum

  14. จำนวนวิธีสวมหมวกต่างกันแต่ละคนใน C++

    ปัญหา มีคน n คน และหมวก 40 ประเภท (เลข 1-40) แต่ละคนมีรายการหมวกที่ชอบ (2D list hats) หาจำนวนวิธีที่คนทุกคนสวมหมวกต่างกันหมด (ไม่มีใครสวมหมวกซ้ำ) คำตอบ modulo 10^9 + 7 ตัวอย่าง: hats = [[4,6,2],[4,6]] → 4 วิธี: [4,6], [6,4], [2,4], [2,6] แนวคิด: DP + Bitmask + Hat-to-People Mapping แทนที่จะวนคน เร

  15. หาผลรวมที่เล็กที่สุดอันดับ K จากเมทริกซ์แถวเรียงลำดับใน C++

    ปัญหา กำหนดเมทริกซ์ mat ขนาด m × n ที่แต่ละแถวเรียงลำดับจากน้อยไปมาก (Non-decreasing) และจำนวนเต็ม k ให้เลือก عنصرละ 1 ตัวจากแต่ละแถว เพื่อสร้างอาร์เรย์ แล้วหา ผลรวมที่เล็กที่สุดอันดับ K จากทุกอาร์เรย์ที่เป็นไปได้ ตัวอย่าง: mat = [[1,3,11],[2,4,6]], k = 5 ผลรวมที่เป็นไปได้ (เรียงจากน้อยไปมาก): [1,

  16. Distinct Subsequences: นับลำดับย่อยที่แตกต่างกันใน C++

    ปัญหา กำหนดสตริง S และ T ให้หาจำนวนลำดับย่อย (Subsequence) ของ S ที่เท่ากับ T โดยลำดับย่อยคือสตริงที่ได้จากการลบตัวอักษรบางส่วน (อาจไม่ลบ) จากสตริงต้นฉบับ โดยไม่เปลี่ยนลำดับสัมพัทธ์ของตัวอักษรที่เหลือ ตัวอย่าง: S = baalllloonnn, T = balloon → ผลลัพธ์ = 36 วิธี แนวคิด Dynamic Programming กำหนด dp[i]

  17. การท่องต้นไม้แบบ Postorder แบบ Iterative ใน Python

    บทนำ Postorder Traversal (ท่องหลัง) คือการเยี่ยมชมโหนดในลำดับ Left → Right → Root โดยปกติมักใช้ Recursion แต่นี่คือวิธีทำแบบ Iterative (วนลูป) โดยใช้ Stack พร้อมสถานะ (State) เพื่อจำลองการทำงานของ Recursion อัลกอริทึม (ขั้นตอน) ถ้า Root เป็น null ให้คืนค่า Empty List สร้าง Stack เก็บคู่ [node, sta

  18. ความแตกต่างระหว่าง Set และ MultiSet ใน C++

    บทนำ ใน C++ ทั้ง std::set และ std::multiset เป็น Associative Container ที่เก็บข้อมูลในลำดับที่เรียงลำดับแล้ว (Sorted Order) ความแตกต่างหลักอยู่ที่การจัดการค่าซ้ำ (Duplicate Values) ตารางเปรียบเทียบหลัก ลำดับ หัวข้อ std::set std::multiset 1 นิยาม เก็บค่าที่ไม่ซ้ำกัน (Unique Keys) เท่านั้น เก็

  19. ความแตกต่างระหว่าง Set และ UnorderedSet ใน C++

    บทนำ ใน C++ ทั้ง std::set และ std::unordered_set เป็นโครงสร้างข้อมูลแบบ Associative Container ที่ใช้เก็บข้อมูลเพื่อให้เข้าถึงและแทรกข้อมูลได้อย่างมีประสิทธิภาพ แต่มันมีลักษณะการทำงานและประสิทธิภาพที่แตกต่างกันอย่างมาก ตารางเปรียบเทียบหลัก ลำดับ หัวข้อ std::set std::unordered_set 1 นิยาม เป็น

  20. Search Insert Position ใน C++

    แนวคิด สมมติว่ามีอาร์เรย์ที่เรียงแล้ว arr และค่าเป้าหมาย ให้หาดัชนีเมื่อพบเป้าหมาย หากไม่มี ให้คืนค่าดัชนีที่จะวางได้ถ้าแทรกตามลำดับ เช่น ถ้าอินพุตคือ [1,3,4,6,6] และ target = 5 ผลลัพธ์คือ 3 เพราะแทรก 5 ที่ดัชนี 3 อาร์เรย์จะเป็น [1,3,4,5,6,6] วิธีแก้: n := ขนาด A ถ้า n < 1: คืนค่า 0 low := 0, hig

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