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

    ปัญหา สมมติว่าเรามีอาร์เรย์ A (ดัชนีเริ่มที่ 1) มี N ตัวเลข: A1, A2, ..., AN และอีกจำนวนเต็มหนึ่งคือ B จำนวนเต็ม B หมายความว่าจากดัชนี i ใดๆ ในอาร์เรย์ A เราสามารถกระโดดไปยังตำแหน่งใดๆ ในอาร์เรย์ A ที่มีดัชนี i+1, i+2, ..., i+B ได้ หากตำแหน่งนั้นสามารถกระโดดไปได้ นอกจากนี้ หากเรายืนบนดัชนี i เราต้อง

  2. การนำเลข 9 ออกใน C++

    ปัญหา สมมติว่าเรามีจำนวนเต็ม n เราต้องคืนค่าจำนวนเต็มลำดับที่ n หลังจากดำเนินการดังนี้: เริ่มจากจำนวนเต็ม 1 นำจำนวนเต็มที่มีเลข 9 ออก เช่น 9, 19, 29... ตอนนี้เราจะได้ลำดับจำนวนเต็มใหม่ เช่น 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, ... จำไว้ว่า 1 จะเป็นจำนวนเต็มตัวแรก เช่น ถ้าผนวกเข้าเป็น 9 ผลลัพธ์จะเป็น 10

  3. K Empty Slots (ช่องว่าง K ช่อง) ใน C++

    สมมติว่าเรามีหลอดไฟ N ดวงเรียงเป็นแถว และหมายเลข 1 ถึง N เริ่มต้นหลอดไฟทั้งหมดปิด เราสามารถเปิดหลอดไฟได้ทีละดวงทุกวัน จนหลอดไฟทั้งหมดเปิดหลังจาก N วัน หากเรามีอาเรย์ bulbs ขนาด N โดยที่ bulbs[i] = x หมายความว่า ในวันที่ (i+1) เราจะเปิดหลอดไฟที่ตำแหน่ง x หากเรามีจำนวนเต็มอีกตัว K โดยที่ เราต้องหา หม

  4. Number of Distinct Islands II (จำนวนเกาะที่แตกต่างกัน ระดับ 2) ใน C++

    สมมติว่าเรามีอาเรย์ 2 มิติ binary ไม่ว่างเปล่า ชื่อ grid ที่นี่ เกาะ (island) คือกลุ่มของ 1 (แทนที่ดิน) ที่เชื่อมต่อกัน 4 ทิศทาง เราสามารถสมมติได้ว่า ขอบทั้ง 4 ด้านของ grid ถูกล้อมรอบด้วยน้ำ เราต้องนับจำนวนเกาะที่แตกต่างกัน (distinct islands) เกาะหนึ่งถูกพิจารณาว่าเหมือนอีกเกาะหนึ่ง หากพวกมันมีรูปร

  5. Minimum Window Subsequence (หน้าต่างย่อยขั้นต่ำ) ใน C++

    สมมติว่าเรามีสตริงสองสตริง S และ T เราต้องหา substring W ที่สั้นที่สุดของ S ทำให้ T เป็น subsequence ของ W หากไม่มีหน้าต่างใน S ที่ครอบคลุมตัวอักษรทั้งหมดใน T ให้คืนค่าสตริงว่าง หากมีหลายหน้าต่าง ให้คืนค่าตัวที่มีดัชนีเริ่มต้นซ้ายสุด ดังนั้น หากอินพุทคือ S = abcdebdde, T = bde ผลลัพธ์จะเป็น bcde เน

  6. Employee Free Time (เวลาว่างของพนักงาน) ใน C++

    สมมติว่าเราได้รับรายการตารางเวลาของพนักงาน ซึ่งแสดงถึงเวลาทำงานของแต่ละพนักงาน ตอนนี้สมมติว่าแต่ละพนักงานมีรายการของ Intervals ที่ไม่ทับซ้อนกัน และ intervals เหล่านี้เรียงลำดับแล้ว เราต้องหา รายการของ finite intervals ที่แสดงถึง เวลาว่างร่วมกัน (common free time) ที่มีความยาวบวก สำหรับพนักงานทุกคน

  7. Basic Calculator III (เครื่องคิดเลขพื้นฐาน รุ่น 3) ใน C++

    สมมติว่าเรามีสตริงนิพจน์ง่ายๆ และเราต้อง implement เครื่องคิดเลขพื้นฐานเพื่อประเมินนิพจน์นั้น นิพจน์อาจมีวงเล็บเปิดปิด เครื่องหมายบวก + หรือลบ - จำนวนเต็มที่ไม่ใช่ลบ และช่องว่าง นิพจน์ประกอบด้วยจำนวนเต็มไม่ติดลบ, ตัวดำเนินการ +, -, *, /, วงเล็บเปิดปิด และช่องว่าว การหารจำนวนเต็มควร truncate ไปทางศู

  8. Minimize Max Distance to Gas Station (ลดระยะทางสูงสุดไปสถานีน้ำมัน) ใน C++

    สมมติว่าเรามีเส้นจำนวนแนวนอนหนึ่งเส้น บนเส้นจำนวนนั้น เรามีสถานีน้ำมันอยู่ที่ตำแหน่ง stations[0], stations[1], ..., stations[N-1] โดยที่ N = ขนาดของอาเรย์ stations ตอนนี้ เราเพิ่มสถานีน้ำมันอีก K แห่ง เพื่อให้ D ซึ่งคือระยะทางสูงสุดระหว่างสถานีน้ำมันที่ติดกัน ถูกลดลงต่ำที่สุด เราต้องหาค่า D ที่เล็ก

  9. Number of Valid Subarrays (จำนวน Subarray ที่ถูกต้อง) ใน C++

    สมมติว่าเรามีอาเรย์ A ของจำนวนเต็ม เราต้องหาจำนวน subarray ที่ต่อเนื่องและไม่ว่าง ที่เงื่อนไข: องค์ประกอบซ้ายสุดของ subarray ไม่ใหญ่กว่าองค์ประกอบอื่นๆ ใน subarray นั้น ดังนั้น หากอินพุทคือ [1,4,2,5,3] ผลลัพธ์จะเป็น 11 เนื่องจากมี valid subarrays 11 ตัว คือ [1],[4],[2],[5],[3],[1,4],[2,5],[1,4,2],[

  10. Digit Count in Range (นับจำนวนหลักในช่วง) ใน C++

    สมมติว่าเรามีจำนวนเต็ม d ระหว่าง 0 ถึง 9 เรายังมีจำนวนเต็มบวกสองจำนวน low และ high เป็นขอบเขตล่างและบนตามลำดับ เราต้องหาจำนวนครั้งที่ d ปรากฏเป็นหลักเลขในจำนวนเต็มทั้งหมดระหว่าง low และ high รวมถึงขอบเขต low และ high ดังนั้น หากอินพุทคือ d = 1, low = 1, high = 13 ผลลัพธ์จะเป็น 6 เนื่องจากหลักเลข d=

  11. Confusing Number II (ตัวเลขสับสน ระดับ 2) ใน C++

    สมมติว่าเรามีหลักเลข ถ้าเราหมุนหลักเลขนั้น 180 องศา เพื่อสร้างหลักเลขใหม่ เมื่อ 0, 1, 6, 8, 9 ถูกหมุน 180 องศา จะกลายเป็น 0, 1, 9, 8, 6 ตามลำดับ แต่เมื่อ 2, 3, 4, 5 และ 7 ถูกหมุน 180 องศา จะกลายเป็น invalid Confusing Number คือ ตัวเลขที่เมื่อหมุน 180 องศา จะกลายเป็นตัวเลขใหม่ (ต่างจากตัวเดิม) ถ้าเร

  12. Maximum Number of Ones (จำนวน 1 สูงสุด) ใน C++

    สมมติว่าเรามีเมทริกซ์ M ขนาด w x h โดยที่ทุกเซลล์มีค่า 0 หรือ 1 และ sub-matrix สี่เหลี่ยมจัตุรัสขนาด l x l ใดๆ ของ M มีจำนวน 1 สูงสุด maxOnes เราต้องหาจำนวน 1 สูงสุดที่เมทริกซ์ M อาจมีได้ ดังนั้น หากอินพุทคือ w = 3, h = 3, l = 2, maxOnes = 1 ผลลัพธ์จะเป็น 4 เนื่องจากในเมทริกซ์ 3x3 ไม่มี sub-matrix

  13. Minimum Time to Build Blocks (เวลาน้อยที่สุดในการสร้างบล็อก) ใน C++

    สมมติว่าเรามีรายการบล็อก ถ้า blocks[i] = t หมายความว่า บล็อกที่ i ต้องใช้เวลา t หน่วยในการสร้าง บล็อกสามารถสร้างได้โดยพนักงานเพียงคนเดียวเท่านั้น พนักงานคนเดียวสามารถแยกเป็นสองคนได้ หรือสร้างบล็อกแล้วกลับบ้าน สองการตัดสินใจนี้ใช้เวลา เวลาในการแยกพนักงานหนึ่งคนเป็นสองคน กำหนดเป็นตัวเลขที่ชื่อว่า spl

  14. Valid Palindrome III (พาลินโดรมที่ถูกต้อง ระดับ 3) ใน C++

    สมมติว่าเรามีสตริง s และอีกตัวเลข k เราต้องตรวจสอบว่าสตริงที่ให้มาเป็น K-Palindrome หรือไม่ สตริงถูกกล่าวว่าเป็น K-Palindrome หากมันสามารถแปลงเป็นพาลินโดรมได้โดยการลบตัวอักษรสูงสุด k ตัวจากมัน ดังนั้น หากอินพุทคือ s = abcdeca, k = 2 ผลลัพธ์จะเป็น true เนื่องจากลบ b และ e แล้วจะกลายเป็นพาลินโดรม เพื

  15. Divide Chocolate (แบ่งช็อกโกแลต) ใน C++

    สมมติว่าเรามีแท่งช็อกโกแลตหนึ่งแท่ง ประกอบด้วยชิ้นเล็กๆ (chunks) แต่ละชิ้นมีความหวาน (sweetness) กำหนดโดยรายการที่ชื่อว่า sweetness หากเราต้องการแบ่งช็อกโกแลตให้เพื่อน K คน เราจะเริ่มตัดแท่งช็อกโกแลตเป็น K+1 ชิ้น โดยใช้ K ครั้ง ตอนนี้แต่ละชิ้นประกอบด้วยชิ้นเล็กที่ติดกัน หากเราหยิบชิ้นที่มีความหวานร

  16. Palindrome Removal (การลบพาลินโดรม) ใน C++

    สมมติว่าเรามีอาเรย์จำนวนเต็มชื่อ arr ตอนนี้ในหนึ่งการเคลื่อนไหว เราสามารถเลือก subarray ที่เป็นพาลินโดรม (palindromic subarray) จากดัชนี i ถึง j โดยที่ i ≤ j และลบ subarray นั้นออกจากอาเรย์ที่ให้มา เราต้องจำไว้ว่าหลังจากลบ subarray องค์ประกอบทางซ้ายและขวาของ subarray นั้นจะเคลื่อนที่มาเติมช่องว่างท

  17. การจับมือที่ไม่ทับซ้อน (Handshakes That Don't Cross) ใน C++

    สมมติว่าเรามีจำนวนคนเป็นเลขคู่ n คน ยืนวงกลม และแต่ละคนจับมือกับอีกคนหนึ่ง จะมีการจับมือทั้งหมด n/2 ครั้ง เราต้องหาจำนวนวิธีที่การจับมือเหล่านี้อาจเกิดขึ้น โดยที่ไม่มีการจับมือใดทับซ้อนกัน คำตอบอาจใหญ่มาก ดังนั้นให้คืนคำตอบแบบ modulo 10⁹ + 7 ดังนั้น หากอินพุทคือ n = 2 ผลลัพธ์จะเป็น 1 เพื่อแก้ปัญหา

  18. เขียนฟังก์ชันลบ Linked List ใน C++

    ที่นี่ เราจะสร้างฟังก์ชันที่จะลบองค์ประกอบทั้งหมดของ linked list ทีละตัว ใน C/C++ ไม่มีฟังก์ชันเฉพาะสำหรับทำงานนี้ แต่ใน Java มี automatic garbage collection ช่วยให้ลบ linked list ได้ง่ายขึ้น ตอนนี้ มาดูการนำโปรแกรมนี้ไปใช้: ตัวอย่าง #include <iostream> using namespace std; class Node { publ

  19. เขียนฟังก์ชันสุ่มเลข 1 ใน 3 ตัวตามความน่าจะเป็นที่กำหนดใน C++

    ในโจทย์นี้ เราต้องสร้างฟังก์ชันที่จะสุ่มเลข 3 ตัวตามความน่าจะเป็นที่กำหนด สำหรับสิ่งนี้ เราจะใช้ฟังก์ชันสุ่มตัวเลขในตัว (built-in random number generator) ซึ่งคือ rand(a, b) ที่สุ่มตัวเลขในช่วง [a, b] ด้วยความน่าจะเป็นเท่ากัน งานของเราคือคืนค่าเพียง 3 ตัวเลข A, B, C ซึ่งมีความน่าจะเป็นในการเกิดเป็น

  20. เขียนฟังก์ชันนับจำนวนครั้งที่ int ปรากฏใน Linked List ใน C++

    ในโจทย์นี้ เราได้รับ linked list งานของเราคือสร้างฟังก์ชันที่จะสามารถนับจำนวนครั้งที่จำนวนที่กำหนดปรากฏใน linked list ได้ ตัวอย่าง อินพุต 10, int = 10 เอาต์พุต 3 คำอธิบาย - จำนวน 10 ปรากฏ 3 ครั้งใน linked list วิธีแก้ปัญหานี้ง่ายมาก แค่ traverse linked list และเพิ่มตัวนับเมื่อค่าของโหนดปัจจุบันเท่

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:191/301  20-คอมพิวเตอร์/Page Goto:1 185 186 187 188 189 190 191 192 193 194 195 196 197