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

    ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ของจำนวนเต็ม n ตัว ภารกิจของเราคือสร้างโปรแกรมเพื่อหาลำดับย่อยที่เพิ่มขึ้นมีผลรวมสูงสุดโดยใช้ Binary Indexed Tree ใน C++ คำอธิบายปัญหา เราต้องหาลำดับย่อยที่เพิ่มขึ้นที่มีผลรวมสูงสุดโดยใช้องค์ประกอบของอาร์เรย์ ลำดับย่อยที่เพิ่มขึ้น (Increasing Subsequence) ลำดับย่

  2. ผลรวมสูงสุดขององค์ประกอบเรียงลำดับเพิ่มขึ้นจาก n อาร์เรย์ในโปรแกรม C++

    ในปัญหานี้ เราได้รับเมทริกซ์ 2 มิติขนาด n x m ภารกิจของเราคือสร้างโปรแกรมเพื่อหาผลรวมสูงสุดขององค์ประกอบเรียงลำดับเพิ่มขึ้นจาก n อาร์เรย์ คำอธิบายโปรแกรม ที่นี่ เราต้องหาผลรวมสูงสุดขององค์ประกอบโดยการหยิบหนึ่งองค์ประกอบจากแต่ละแถว โดยที่องค์ประกอบจากแถวที่ i ต้องน้อยกว่าองค์ประกอบจากแถวที่ (i+1) แล

  3. ผลรวมสูงสุดของโหนดในต้นไม้แบบทวิภาคที่ไม่มีสองโหนดติดกันด้วย Dynamic Programming ใน C++

    ในปัญหานี้ เราได้รับต้นไม้แบบทวิภาค (Binary Tree) ที่แต่ละโหนดมีค่า ภารกิจของเราคือสร้างโปรแกรมเพื่อหาผลรวมสูงสุดของโหนดในต้นไม้แบบทวิภาคที่ไม่มีสองโหนดติดกันโดยใช้ Dynamic Programming คำอธิบายปัญหา เราจะเลือกซับเซ็ตของต้นไม้แบบทวิภาคเพื่อทำให้ผลรวมสูงสุด โดยที่โหนดต่างๆ ไม่ได้เชื่อมต่อโดยตรง ตัวอ

  4. ผลรวมสูงสุดของคู่ที่มีความต่างเฉพาะเจาะจงในโปรแกรม C++

    ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ของจำนวนเต็ม n ตัวและตัวเลข d ภารกิจของเราคือสร้างโปรแกรมเพื่อหาผลรวมสูงสุดของคู่ที่มีความต่างเฉพาะเจาะจงใน C++ คำอธิบายปัญหา เราจะหาคู่ในลักษณะที่ความต่างขององค์ประกอบของคู่น้อยกว่า d ผลรวมของคู่ทั้งหมดที่เป็นเช่นนั้นควรเป็นสูงสุด ตัวอย่าง อินพุต arr[] = {5, 9,

  5. ผลรวมสูงสุดของผลคูณคู่ในอาร์เรย์ที่อนุญาตให้มีค่าลบในโปรแกรม C++

    ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ที่มีค่าจำนวนเต็ม n ค่า (อนุญาตให้มีค่าลบ) ภารกิจของเราคือสร้างโปรแกรมเพื่อหาผลรวมสูงสุดของผลคูณคู่ในอาร์เรย์ที่อนุญาตให้มีค่าลบ คำอธิบายปัญหา เราต้องสร้างคู่โดยใช้องค์ประกอบของอาร์เรย์ โดยที่ผลรวมของผลคูณขององค์ประกอบของคู่เป็นสูงสุด ตัวอย่าง อินพุต arr[] = {-5

  6. ผลรวมสูงสุดของค่าที่น้อยที่สุดและน้อยที่สุดอันดับสองในอาร์เรย์โปรแกรม C++

    ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ภารกิจของเราคือสร้างโปรแกรมเพื่อหาผลรวมสูงสุดของค่าที่น้อยที่สุดและน้อยที่สุดอันดับสองในอาร์เรย์ คำอธิบายปัญหา เราต้องการหาผลรวมขององค์ประกอบที่น้อยที่สุดและน้อยที่สุดอันดับสองของเซิร์ฟอาร์เรย์ (subarray) ของอาร์เรย์ และคืนค่าผลรวมสูงสุดของทั้งหมด ตัวอย่าง อินพุ

  7. ผลรวมสูงสุดของผลคูณสองอาร์เรย์ในโปรแกรม C++

    ในปัญหานี้ เราได้รับสองอาร์เรย์ arr1[] และ arr2[] ขนาด n ภารกิจของเราคือสร้างโปรแกรมเพื่อหาผลรวมสูงสุดของผลคูณของสองอาร์เรย์ คำอธิบายปัญหา เราต้องการหาผลรวมสูงสุดของผลคูณของสองอาร์เรย์ เราต้องหาผลรวมสูงสุดของผลคูณของหนึ่งองค์ประกอบจาก arr1 และอีกองค์ประกอบจาก arr2 ตัวอย่าง อินพุต arr1[] = {3, 5,

  8. เส้นทางผลรวมสูงสุดในเมทริกซ์จากด้านบนลงล่างและกลับมาในโปรแกรม C++

    ในปัญหานี้ เราได้รับเมทริกซ์ mat[][] ขนาด n x m ภารกิจของเราคือสร้างโปรแกรมเพื่อหาเส้นทางผลรวมสูงสุดในเมทริกซ์จากด้านบนลงล่างและกลับมาอีกครั้ง คำอธิบายปัญหา เราต้องการหาผลรวมเส้นทางสูงสุดจากมุมซ้ายบนไปยังมุมขวาล่าง และกลับมาอีกครั้ง การเคลื่อนที่ที่ถูกต้อง จาก mat[0][0] ไป mat[n-1][m-1]: ขวา (mat[

  9. โปรแกรมหาผลรวม subsequence สูงสุด ระยะห่างไม่ น้อยกว่า K (วิธี DP อีกแบบ) ใน C++

    ให้อาร์เรย์ arr[] และ k หา subsequence ผลรวมมากที่สุด ที่สมาชิกห่างกันอย่างน้อย k ตำแหน่ง (DP อีกแบบ) ตัวอย่าง: arr=[6,2,5,1,9,11,4], k=2 → 16 (เลือก 5 และ 11) วิธีแก้ปัญหา (DP แบบ Forward) dp[i] = ผลรวมสูงสุดของ subsequence ที่จบที่ i (ต้องเลือก arr[i]) ถ้า i < k: dp[i] = max(arr[i], dp[i-1]) มิ

  10. โปรแกรมหาผลรวม subarray สูงสุด ที่ค่าเริ่มต้นและสิ้นสุดเท่ากันใน C++

    ให้อาร์เรย์ arr[] หา subarray ที่ arr[start]==arr[end] และผลรวมมากที่สุด ตัวอย่าง: arr=[2,1,3,5,6,2,4,3] → 23 (subarray [3,5,6,2,4,3] เริ่ม 3 จบ 3) วิธีแก้ปัญหา เพราะค่าทุกตัวเป็นบวก → subarray ยิ่งยาวผลรวมยิ่งมาก หา first/last occurrence ของแต่ละค่า คำนวณผลรวมด้วย Prefix Sum เลือกมากสุด ตัวอย่างโค้

  11. โปรแกรมหาผลรวม subsequence สูงสุด ระยะห่างอย่างน้อย k ใน C++

    ให้อาร์เรย์ arr[] และ k หา subsequence ผลรวมมากที่สุด ที่สมาชิกห่างกันอย่างน้อย k ตำแหน่ง ตัวอย่าง: arr=[2,3,7,9,2,8,3], k=2 → 15 (เลือก 7 และ 8 ห่าง 3 ตำแหน่ง) วิธีแก้ปัญหา (DP) dp[i] = ผลรวมสูงสุดจาก arr[i..n-1] ถ้า i+k+1 >= n: dp[i] = max(arr[i], dp[i+1]) มิฉะนั้น: dp[i] = max(arr[i] + dp[i+k+

  12. โปรแกรมหาผลรวมส่วนย่อยสูงสุดไม่มีสมาชิกติดกันใน C++ (วิธี DP)

    ให้อาร์เรย์ arr[] หาผลรวมสูงสุดของ subsequence ที่ไม่มีสมาชิกติดกันในอาร์เรย์เดิม ตัวอย่าง: arr=[5,2,1,9,6] → 14 (เลือก 5,1,6 หรือ 5,9) วิธีแก้ปัญหา (Dynamic Programming) dp[i] = ผลรวมสูงสุดจาก arr[i..n-1] dp[i] = max(arr[i] + dp[i+2], dp[i+1]) Base: dp[n-1]=arr[n-1], dp[n-2]=max(arr[n-1],arr[n-2])

  13. โปรแกรมหาความต่างน้ำหนักสูงสุดใน C++

    ให้อาร์เรย์ arr[] และตัวเลข M หา M องค์ประกอบ ที่ผลต่างสัมบูรณ์ระหว่างผลรวม M ตัวนั้น กับผลรวมตัวที่เหลือ มากที่สุด ตัวอย่าง: arr=[3,1,6,9,4], M=3 → 15 เลือก 4,6,9 ผลรวม 19, เหลือ 3+1=4, |19-4|=15 วิธีแก้ปัญหา ความต่างมากที่สุดเกิดจากการเลือก M ตัวที่ใหญ่ที่สุด หรือ M ตัวที่เล็กที่สุด คำนวณทั้ง 2 กร

  14. โปรแกรมแปลงเศษส่วนเป็นทศนิยมมีวงเล็บซ้ำใน C++

    ให้ numerator, denominator แปลงเป็นทศนิยม ถ้ามีส่วนซ้ำ ให้ล้อมด้วยวงเล็บ ตัวอย่าง: 164/3 = 54.(6) ขั้นตอนการแก้ปัญหา จัดการเครื่องหมาย และส่วนจำนวนเต็ม คำนวณเศษ remainder = numerator % denominator ถ้า remainder==0 คืนค่าส่วนจำนวนเต็ม ใช้ Map เก็บ remainder → ตำแหน่งในผลลัพธ์ วนซ้ำ: remainder *= 10,

  15. โปรแกรมหาลำดับการดำเนินการแปลงสตริงหนึ่งเป็นอีกสตริงใน C++

    ให้สตริง S และ T หาลำดับการดำเนินการสั้นที่สุดแปลง S เป็น T (Insert + หรือ Delete -) ตัวอย่าง: S=xxxy, T=xxyy → [x,x,-x,y,+y] วาง x,x ลบ x ตัวที่ 3 วาง y เพิ่ม y ขั้นตอนการแก้ปัญหา (DP + Path Reconstruction) DP[i][j] = ขั้นตอนน้อยสุดแปลง S[i..] เป็น T[j..] ถ้า S[i]==T[j]: dp[i][j] = dp[i+1][j+1] D

  16. โปรแกรมตรวจสอบผู้เล่นคนแรกชนะเกม Ghost ใน C++

    เกม Ghost: ผู้เล่นสลับกันเพิ่มตัวอักษร ต้องเป็น prefix ของคำในรายการ ใครสะกดคำครบก่อนแพ้ ตรวจสอบผู้เล่นคนแรกชนะได้ไหม ตัวอย่าง: words=[manage,manager,min] → True เล่น: m(1)→ma(2)→man(1)→mana(2)→manag(1)→manage(2) แพ้ → ผู้เล่น 1 ชนะ ขั้นตอนการแก้ปัญหา จัดกลุ่มคำตามตัวอักษรแรก ในแต่ละกลุ่ม หาคำสั้นท

  17. โปรแกรมนับคำถามที่เป็นจริงในกราฟมีน้ำหนักขอบใน C++

    ให้กราฟไม่มีทิศทาง edges=[u,v,w] และ queries=[u,v,w] คำถาม: มี path จาก u ถึง v ที่น้ำหนักทุกขอบ <= w หรือไหม นับคำถามที่เป็นจริง ตัวอย่าง: edges=[[0,1,6],[1,2,7],[2,3,8],[0,3,5]], queries=[[0,2,14],[1,0,3]] → 1 0→2: path 0-1-2 น้ำหนัก max=7 <=14 ✓, 1→0: ต้องใช้ 0-1 (6) > 3 ✗ ขั้นตอนการแก้ป

  18. โปรแกรมหาจำนวนหมุดน้อยสุดแขวนป้ายทั้งหมดใน C++

    ให้ช่วง intervals = [start, end] แทนป้าย ต้องการหมุดน้อยสุดที่แผงทุกช่วง (หมุด 1 ตัวแขวนป้ายได้หลายแผ่นถ้าอยู่ในช่วง) ตัวอย่าง: [[2,5],[5,6],[8,10],[10,13]] → 2 หมุด (ที่ 5 และ 10) ขั้นตอนการแก้ปัญหา (Greedy) เรียงช่วงตามจุดสิ้นสุด (end) น้อยไปมาก last = -inf, ret = 0 วนแต่ละช่วง: ถ้า last >= s

  19. โปรแกรมหาทุก IP Address ที่เป็นไปได้จากสตริงตัวเลขใน C++

    ให้สตริงตัวเลข ต้องการสร้าง IP Address ทุกแบบที่ถูกต้อง (4 ส่วน, แต่ละส่วน 0-255, ไม่มี leading zeros ยกเว้น 0 เอง) ตัวอย่าง: 25525511136 → [255.255.11.136, 255.255.111.36] ขั้นตอนการแก้ปัญหา (Backtracking) 255 คืน 10000 ฟังก์ชัน addDots(positions): รวมตัวเลขด้วย . คืนสตริง IP ฟังก์ชัน solve(s, res

  20. โปรแกรมหาความยากรวมต่ำสุดทำงาน k วันใน C++

    ให้ jobs[] ความยากแต่ละงาน และ k วัน ต้องทำงานตามลำดับ วันละอย่างน้อย 1 งาน ความยากของวัน = max ความยากงานในวันนั้น หาผลรวมความยากน้อยสุด ตัวอย่าง: jobs=[2,3,4,6,3], k=2 → 8 วันที่ 1: [2] (max=2), วันที่ 2: [3,4,6,3] (max=6) รวม 8 ขั้นตอนการแก้ปัญหา (DP + Memoization) dp[start][k] = คำตอบสำหรับ job

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:235/301  20-คอมพิวเตอร์/Page Goto:1 229 230 231 232 233 234 235 236 237 238 239 240 241