Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. โปรแกรม C++ หาจำนวนคู่ในอาร์เรย์ที่ตรงตามเงื่อนไข

    กำหนดอาร์เรย์ nums ขนาด n ต้องการหาจำนวนคู่ (i, j) ที่ i < j และ j - i = nums[i] + nums[j] (ความต่างตำแหน่งเท่ากับผลรวมค่า) จำนวนคู่ทั้งหมดที่เป็นไปได้คือ n(n-1)/2 ตัวอย่าง: n=8, nums={4,2,1,0,1,2,3,3} ผลลัพธ์: 13 ขั้นตอนการแก้ปัญหา (Two-pointer / Binary Search) สร้างอาร์เรย์ vals[i] = i + 1 -

  2. โปรแกรม C++ หาจำนวนด้านของรูปหลายเหลี่ยมในกริด

    กำหนดกริด h × w มีเซลล์สีขาว (.) และสีดำ (#) เซลล์สีดำรวมกันเป็นรูปหลายเหลี่ยม (ขอบนอกสุดของกริดเป็นสีขาวเสมอ) ต้องการหาจำนวนด้านของรูปหลายเหลี่ยมนั้น ตัวอย่าง: h=4, w=4, grid={...., .##., .##., ....} ผลลัพธ์: 4 (เป็นสี่เหลี่ยมจัตุรัส มี 4 ด้าน) ขั้นตอนการแก้ปัญหา วนลูป i = 1 ถึง h-1, j = 1 ถึ

  3. โปรแกรม C++ หาจำนวนเส้นขอบสะพาน (Bridge Edges) ในกราฟ

    กำหนดกราฟไม่มีทิศทาง ไม่มีน้ำหนัก n จุดยอด m เส้นขอบ (ไม่มีขอบขนานหรือลูป) Bridge Edge คือเส้นขอบที่ถ้าลบออกจะทำให้กราฟไม่เชื่อมต่อ (disconnected) ต้องการหาจำนวน Bridge Edges ตัวอย่าง: n=5, m=6, edges={{1,2},{1,3},{2,3},{2,4},{2,5},{3,5}} ผลลัพธ์: 1 (เฉพาะขอบ {2,4} เป็นสะพาน) ขั้นตอนการแก้ปัญหา (D

  4. โปรแกรม C++ นับจำนวนเซลล์ที่ถูกส่องสว่างโดยหลอดไฟหลายดวง

    กำหนดกริด h × w มีหลอดไฟหลายดวง (ในอาร์เรย์ bulb) และอุปสรรค (ในอาร์เรย์ obstacle) หลอดส่องสว่างตัวเองและ 4 ทิศทาง จนกว่าจะเจออุปสรรค อุปสรรคบังแสงและไม่ถูกส่อง ต้องการหาจำนวนเซลล์ทั้งหมดที่ถูกส่องสว่าง ตัวอย่าง: h=4, w=4, bulb={{1,1},{2,2},{3,3}}, obstacle={{0,0},{2,3}} ผลลัพธ์: 13 ขั้นตอนการแก้ป

  5. โปรแกรม C++ หาจำนวนเซลล์สูงสุดที่หลอดไฟสามารถส่องสว่างได้

    กำหนดกริด h × w ที่มีอุปสรรค (#) และช่องว่าง (.) มีหลอดไฟเพียง 1 ดวง วางได้ที่ช่องว่างเท่านั้น หลอดส่องสว่าง 4 ทิศทาง (ซ้าย ขวา บน ล่าง) จนกว่าจะเจออุปสรรคหรือขอบกริด ต้องการหาจำนวนเซลล์สูงสุดที่ส่องสว่างได้โดยการวางหลอดอย่างเหมาะสม ตัวอย่าง: h=4, w=4, grid={#..., ...., ...#, ....} ผลลัพธ์: 7 ขั้น

  6. โปรแกรม C++ หาเวลาน้อยที่สุดเดินทางโดยรถไฟระหว่างสถานี

    มี n สถานี เชื่อมด้วย m ราง (สองทาง) ต้องเดินทางจาก src ไป dst รางที่ i เชื่อม {station1, station2} จากสถานี j รถไฟออกทุก k_j หน่วยเวลา (คูณของ k_j) และใช้เวลา t_j ถึงสถานีปลายทาง ข้อมูลใน departure = {{t_j, k_j}} สามารถเปลี่ยนรถไฟได้ทันที (เวลาเปลี่ยน = 0) หาเวลาน้อยที่สุดจาก src ถึง dst ตัวอย่าง:

  7. โปรแกรม C++ หาคะแนนสูงสุด (Tally) จากลำดับจำนวนเต็ม

    กำหนดจำนวนเต็ม n, m และ k ตัวอันดับ (tuple) แต่ละอันดับมี 4 ค่า {a_i, b_i, c_i, d_i} พิจารณาลำดับ dp ขนาด n ที่เป็นจำนวนเต็มบวกและเพิ่มขึ้นอย่างเคร่งครัด (1 ≤ dp[1] < dp[2] < ... < dp[n] ≤ m) กำหนด Tally = ผลรวม d_i สำหรับทุก i ที่ dp[b_i] - dp[a_i] = c_i หา Tally สูงสุดที่เป็นไปได้ ตัวอย่าง: n=4,

  8. โปรแกรม C++ หาพิกัดศูนย์กลางและความสูงของอาคาร

    มีอาคารที่มีพิกัดศูนย์กลาง (xc, yc) และความสูง h (ไม่ทราบค่า) ได้รับข้อมูล n จุด แต่ละจุดมีพิกัด (x, y) และค่าความสูง a ที่คำนวณจากสูตร max(h - |x - xc| - |y - yc|, 0) ต้องการหา xc, yc, h จากข้อมูลเหล่านี้ ตัวอย่าง: n = 3, x = {3, 3, 2}, y = {4, 2, 3}, a = {6, 6, 6} ผลลัพธ์: 3 3 7 (ศูนย์กลางที่ 3,3

  9. โปรแกรม C++ หาจำนวนรอบการทำซ้ำเพื่อเปลี่ยนเซลล์ทั้งหมดเป็นสีดำ

    กำหนดกริดที่มีเซลล์ 2 ประเภท: สีดำ (#) และสีขาว (.) ในแต่ละรอบ จะเปลี่ยนเซลล์สีขาวที่ติดกับเซลล์สีดำ (แนวนอน/แนวตั้ง) ให้กลายเป็นสีดำ ทำซ้ำจนกว่าทุกเซลล์จะเป็นสีดำ ต้องการหาจำนวนรอบที่ใช้ (กริดเริ่มต้นต้องมีเซลล์ดำอย่างน้อย 1 เซลล์) ตัวอย่าง: h = 4, w = 4, grid = {#..., .#.., ...., ...#} ผลลัพธ์คือ

  10. โปรแกรม C++ หาจุดยอด Super Vertices ในกราฟ

    กำหนดกราฟที่มี n จุดยอด (หมายเลข 1 ถึง n) เชื่อมต่อด้วยเส้นขอบในอาร์เรย์ edges แต่ละจุดยอดมีค่า x (1 ถึง n) ในอาร์เรย์ values จุดยอด i จะเป็น Super Vertex ก็ต่อเมื่อเส้นทางสั้นที่สุดจากจุดยอด 1 ไปยัง i ไม่มีจุดยอดใดที่มีค่า x เท่ากับจุดยอด i ต้องการพิมพ์จุดยอดทั้งหมดที่เป็น Super Vertex ตัวอย่าง: n

  11. โปรแกรม C++ หาจำนวนวิธีการระบายสีกริดที่มีแผ่นปิด

    โจทย์ให้กริดขนาด 2 × n ที่ต้องปิดทับด้วย n แผ่น (ไม่ทับซ้อนกัน) แต่ละแผ่นต้องระบายสีเป็นสีแดง น้ำเงิน หรือเขียว โดยเงื่อนไขคือแผ่นที่ติดกันไม่สามารถมีสีเดียวกันได้ (ไม่จำเป็นต้องใช้สีทั้ง 3 สี) การจัดวางแผ่นในกริดระบุโดยอาร์เรย์ grid ที่แผ่นเดียวกันใช้ตัวอักษรอังกฤษตัวเดียวกัน แผ่นต่างกันใช้ตัวอักษร

  12. โปรแกรม C++ หากำไรสูงสุดจากการซื้อขายข้าวสาลีระหว่างเมือง

    สมมติว่ามี n เมืองเชื่อมต่อกันด้วย m ถนน ซึ่งเป็นถนน חד-ทิศทาง (ไปได้เพียงทางเดียว) ถนนถูกกำหนดในรูปแบบ {ต้นทาง, ปลายทาง} ในแต่ละเมืองมีราคาข้าวสาลีต่างกัน ตัวแปร price เก็บราคาที่เมืองที่ i นักเดินทางสามารถซื้อข้าวสาลีจากเมืองใดก็ได้ และเดินทางไปขายที่เมืองอื่น (หากเดินทางได้) เป้าหมายคือหากำไรสูงส

  13. โปรแกรม C++ หาจำนวนการดำเนินการเพื่อเพิ่มจำนวนเซลล์เลขคู่ในกริดให้สูงสุด

    สมมติว่าเราได้รับกริดขนาด h × w ซึ่งทุกเซลล์ในกริดมีค่าเฉพาะตัวที่กำหนดไว้ เราต้องการเพิ่มจำนวนเซลล์ที่มีค่าเป็นเลขคู่ให้มากที่สุด โดยสามารถทำได้โดยการเลือกเซลล์ที่ยังไม่เคยเลือก แล้วลดค่าของเซลล์นั้นลง 1 และเพิ่มค่าของเซลล์ที่อยู่ติดกันในแนวตั้งหรือแนวนอนขึ้น 1 โปรแกรมจะแสดงผลลัพธ์เป็นจำนวนการดำเนิ

  14. โปรแกรม C++ หาเส้นทางสั้นที่สุดในกราฟต้นไม้สำหรับหลายคำถาม

    คำอธิบายปัญหา สมมติว่าเรามีกราฟ n โหนด เชื่อมต่อขั้นต่ำ (ต้นไม้) ขอบให้ในอาร์เรย์รูปแบบ {ต้นทาง, ปลายทาง, น้ำหนัก} มี q คำถาม แต่ละคำถามรูปแบบ {ต้นทาง, ปลายทาง} ต้องหาเส้นทางสั้นที่สุดจากต้นทางไปปลายทางผ่านโหนด k พิมพ์ค่าใช้จ่ายแต่ละคำถาม ตัวอย่าง: n = 6, q = 3, k = 1, edges = {{1, 2, 2}, {1, 3, 4

  15. โปรแกรม C++ หาผลรวมค่าใช้จ่ายเส้นทางสั้นที่สุดสำหรับทริปเล็ตทั้งหมด

    คำอธิบายปัญหา สมมติว่ามีเมือง n แห่ง และถนน m สาย ถนนให้มาในอาร์เรย์รูปแบบ {ต้นทาง, ปลายทาง, น้ำหนัก} กำหนดทริปเล็ต (s, t, k) โดย s, t, k เป็นเมือง ต้องคำนวณเวลาน้อยที่สุดจาก s ไป t โดยเยี่ยมชมได้เฉพาะเมือง 1 ถึง k ถ้า t ไม่ถึงได้จาก s คืน 0 ต้องคำนวณทุกทริปเล็ต (s, t, k) และหาผลรวม ตัวอย่าง: n =

  16. โปรแกรม C++ หาความต่างน้อยที่สุดในคู่อาร์เรย์จำนวนเต็ม n คู่

    คำอธิบายปัญหา สมมติว่าเรามีอาร์เรย์ a และ b ขนาด n และ m ต้องการจับคู่ n หรือ m คู่ (ค่าที่น้อยกว่า) ใช้ค่าจากทั้งสองอาร์เรย์ คู่ต้องมี 1 ค่าจาก a และ 1 ค่าจาก b จับคู่ให้ความต่างของค่าในคู่เป็นค่าน้อยที่สุดและเท่ากันทุกคู่ พิมพ์ค่าความต่างนั้น ตัวอย่าง: n = 4, m = 4, a = {2, 3, 4, 7}, b = {3, 4,

  17. โปรแกรม C++ หาจำนวนพนักงานแต่ละระดับทักษะที่ต้องโอนไปสาขาใหม่

    คำอธิบายปัญหา สมมติว่ามีพนักงาน n คนในบริษัท แต่ละคนมีระดับทักษะ 1 ถึง k จำนวนพนักงานระดับ i อยู่ในอาร์เรย์ skill โดย skill[i] คือจำนวนพนักงานระดับ i สาขาใหม่เปิด ต้องโอนพนักงานทักษะต่างๆ ไป m คน ต้องหาวิธีโอนที่ลดสูตร max(branch[i]/m - skill[i]/n) ต่ำสุด ผลรวม branch[i] = m ต้องหาค่า branch[i] ตั

  18. โปรแกรม C++ ตรวจสอบว่าสร้างเมทริกซ์พาลินโดรมจากเมทริกซ์ที่กำหนดได้หรือไม่

    คำอธิบายปัญหา สมมติว่าเรามีเมทริกซ์ขนาด h x w มีตัวอักษรภาษาอังกฤษ ต้องการสร้างเมทริกซ์ใหม่ที่แถวและคอลัมน์ทั้งหมดเป็นพาลินโดรม สามารถจัดเรียงแถวและคอลัมน์ได้จากเมทริกซ์เดิม แต่ห้ามเปลี่ยนตัวอักษร (a ไม่กลายเป็น b) ถ้าทำได้คืน true มิฉะนั้น false ตัวอย่าง: h = 4, w = 4, mat = {xxyy, xyxx, yxxy, xy

  19. โปรแกรม C++ นับคู่ลำดับที่มีค่าต่ำสุดและสูงสุดในแถวและคอลัมน์

    คำอธิบายปัญหา สมมติว่าเรามีตัวเลข 3 ตัวคือ N, M และ K มีแถวนอน N แถว และแถวตั้ง M แถว จะเขียนจำนวนเต็ม 1 ถึง K ในแต่ละเซลล์ กำหนดลำดับ A และ B ว่า: สำหรับ i 1 ถึง N, A[i] คือค่าน้อยที่สุดในแถวที่ i สำหรับ j 1 ถึง M, B[j] คือค่ามากที่สุดในคอลัมน์ที่ j ต้องการหาจำนวนคู่ (A, B) ถ้าคำตอบใหญ่เกิน ให้

  20. โปรแกรม C++ หาช่วงเวลาน้อยที่สุดสูงสุดระหว่างคู่นาฬิกา

    คำอธิบายปัญหา สมมติว่าเรามีอาร์เรย์ D N องค์ประกอบ ในงานเขียนโปรแกรมมีผู้เข้าร่วม N+1 คนรวมอมล อมลตรวจสอบว่าช่วงเวลาระหว่างเมืองของเขากับคนที่ i คือ D[i] ชั่วโมง ช่วงเวลาระหว่างเมือง A และ B: ถ้าเวลาท้องถิ่นเมือง B เป็น d โมง เมื่อเมือง A เป็น 0 โมง ช่วงเวลาคือ min(d, 24-d) ชั่วโมง ใช้ระบบ 24 ชั่วโ

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:290/301  20-คอมพิวเตอร์/Page Goto:1 284 285 286 287 288 289 290 291 292 293 294 295 296