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

    สมมติว่ามีแมทริกซ์ mat[][] มีตัวอักษร Z และ P Z คือโซมบี้ และ P คือพืช ตัวอักษร * คือที่ว่างเปล่า โซมบี้สามารถโจมตีพืชได้เมื่อพืชอยู่ติดกัน เราต้องหาจำนวนพืชที่ปลอดภัยจากโซมบี้ สมมติว่าแมทริกซ์เป็นแบบด้านล่าง: ดังนั้นมีพืชที่ปลอดภัยเพียงสองต้น เราจะเดินทางผ่านองค์ประกองของแมทริกซ์ทีละตัว เมื่อองค์ป

  2. หาราคาขายจากเปอร์เซ็นต์กำไรและต้นทุนใน C++

    พิจารณาว่ามีราคาขาย และเปอร์เซ็นต์กำไรหรือขาดทุนกำหนด เราต้องหาราคาทุนของสินค้า สูตรคือดังนี้: $$Cost Price=\frac{Sell Price\times 100}{100+percentage\ profit}$$ $$Cost Price=\frac{Sell Price\times 100}{100-percentage\ loss}$$ ตัวอย่าง #include <iostream> using namespace std; float priceWhe

  3. หาตัวเลข K ที่น้อยที่สุด ที่ K % p = 0 และ q % K = 0 ใน C++

    สมมติว่ามีจำนวนเต็มสองจำนวน P และ Q เราต้องหาตัวเลข K ที่น้อยที่สุด ซึ่ง K mod P = 0 และ Q mod K = 0 มิฉะนั้นพิมพ์ -1 ดังนั้นถ้า P และ Q เป็น 2 และ 8 K จะเป็น 2 เพราะ 2 mod 2 = 0 และ 8 mod 2 = 0 เพื่อให้ K เป็นไปได้ Q ต้องหารด้วย P ลงตัว ดังนั้นถ้า P mod Q = 0 ให้พิมพ์ P มิฉะนั้นพิมพ์ -1 ตัวอย่าง #i

  4. หาค่าที่มากกว่าและใกล้ที่สุดสำหรับทุกองค์ประกอบในอาร์เรย์ใน C++

    ที่นี่เราจะดูวิธีการหาค่าที่ใกล้ที่สุดสำหรับทุกองค์ประกอบในอาร์เรย์ หากองค์ประกอบ x มีองค์ประกอบถัดไปที่มากกว่ามัน และมีอยู่ในอาร์เรย์ด้วย นั่นจะเป็นค่าที่มากกว่าขององค์ประกอบนั้น หากองค์ประกอบไม่มีอยู่ ให้คืนค่า -1 สมมติว่าองค์ประกอบอาร์เรย์คือ [10, 5, 11, 6, 20, 12] ค่าที่มากกว่าคือ [11, 6, 12, 10

  5. หาตัวเลขที่ใกล้ที่สุดกับ n และหารด้วย m ลงตัวใน C++

    สมมติว่ามีจำนวนเต็มสองจำนวน n และ m เราต้องหาตัวเลขที่ใกล้ที่สุดกับ n และหารด้วย m ลงตัว หากมีตัวเลขมากกว่าหนึ่งตัว ให้แสดงตัวเลขที่มีค่าสัมบูรณ์สูงสุด ถ้า n หารด้วย m ลงตัว ให้คืนค่า n ดังนั้นถ้า n = 13, m = 4 ผลลัพธ์คือ 12 เพื่อแก้ปัญหานี้ เราสามารถทำตามขั้นตอนเหล่านี้: ให้ q := n/m และ n1 := m*q

  6. หาองค์ประกอบทั่วไปใน Linked List 3 รายการใน C++

    สมมติว่ามี Linked List 3 รายการ เราต้องหาองค์ประกอบทั่วไปทั้งหมดที่มีอยู่ใน Linked List ทั้งสาม สมมติว่ารายการเหล่านี้คือ [10, 12, 15, 20, 25], [10, 12, 13, 15] และ [10, 12, 15, 24, 25, 26] องค์ประกอบทั่วไปในรายการทั้งสามคือ 10, 12 และ 15 เราจะใช้เทคนิคการแฮช (Hashing) เพื่อแก้ปัญหานี้ เพื่อแก้ปัญหา

  7. หาจำนวนสตริงไบนารีความยาว N ที่มี 1 ติดต่อกันอย่างน้อย 3 ตัวใน C++

    สมมติว่าเรามีจำนวนเต็ม N เราต้องหาจำนวนสตริงไบนารีที่เป็นไปได้ทั้งหมดที่มีความยาว N ซึ่งมี 1 ติดต่อกันอย่างน้อย 3 ตัว ดังนั้นถ้า n = 4 ตัวเลขจะเป็น 0111, 1110, 1111 ดังนั้นผลลัพธ์คือ 3 เพื่อแก้ปัญหานี้ เราสามารถใช้แนวทาง Dynamic Programming (การเขียนโปรแกรมแบบไดนามิก) ได้ DP(i, x) บ่งบอกจำนวนสตริงคว

  8. หาองค์ประกอบทั่วไปในอาร์เรย์เรียงลำดับ 3 อาร์เรย์ใน C++

    สมมติว่ามีอาร์เรย์ 3 อาร์เรย์ที่มีองค์ประกอบบ้าง เราต้องหาองค์ประกอบทั่วไปทั้งหมดที่มีอยู่ในอาร์เรย์ทั้งสาม สมมติว่าองค์ประกอบเหล่านี้คือ [10, 12, 15, 20, 25], [10, 12, 13, 15] และ [10, 12, 15, 24, 25, 26] องค์ประกอบทั่วไปในอาร์เรย์ทั้งสามคือ 10, 12 และ 15 สมมติว่าองค์ประกอบปัจจุบันที่กำลังเดินทางใน

  9. หาจำนวนจำนวนเต็มจาก 1 ถึง n ที่ประกอบด้วยเลข 0 และ 1 เท่านั้นใน C++

    สมมติว่าเรามีตัวเลข n งานของเราคือหาจำนวนจำนวนเต็มจาก 1 ถึง n ซึ่งประกอบด้วยเลข 0 และ 1 เท่านั้น ดังนั้นถ้า n = 15 ผลลัพธ์จะเป็น 3 คือ 1, 10, 11 เพื่อแก้ปัญหานี้ เราจะสร้างจำนวนเต็มโดยใช้ 0 และ 1 ด้วยฟังก์ชันเรียกซ้ำ (Recursive) โค้ดต่อไปนี้จะช่วยให้เข้าใจได้ดีขึ้น ตัวอย่าง #include <iostream>

  10. หา 1 ติดต่อกันความยาว >= n ในการแทนค่าบاينารีของจำนวนใน C++

    สมมติว่าเรามีจำนวนเต็มสองจำนวน x และ n งานของเราคือค้นหาสตรีม 1 ติดต่อกันแรก (32-bit binary) ซึ่งมีความยาวมากกว่าหรือเท่ากับค่า n และคืนค่าตำแหน่งของมัน หากไม่มีสตรีมดังกล่าว ให้คืนค่า -1 ตัวอย่างเช่น ถ้า x = 35 และ n = 2 ผลลัพธ์จะเป็น 31 การแทนค่าบายนารีของ 35 ในจำนวนเต็ม 32-bit เป็นดังนี้: 0000000

  11. หาจำนวนจำนวนเต็ม x ในช่วง (1,N) ที่ x และ x+1 มีจำนวนตัวหารเท่ากันใน C++

    สมมติว่าเรามีจำนวนเต็ม N เราต้องหาจำนวนจำนวนเต็ม 1 < x < N ซึ่ง x และ x + 1 มีจำนวนตัวหารบวกเท่ากัน ดังนั้นถ้า N = 3 ผลลัพธ์จะเป็น 1 เพราะตัวหารของ 1 คือ 1 ตัวหารของ 2 คือ 1 และ 2 และตัวหารของ 3 คือ 1 และ 3 เพื่อแก้ปัญหานี้ เราจะหาจำนวนตัวหารของทุกตัวเลขต่ำกว่า N และเก็บไว้ในอาร์เรย์ จากนั้นนั

  12. นับโหนดทั่วไปใน Doubly Linked List สองรายการใน C++

    สมมติว่ามี Doubly Linked List สองรายการ เราต้องหาจำนวนโหนดทั่วไปทั้งหมดในทั้งสอง Doubly Linked List ดังนั้นถ้ารายการทั้งสองเป็น [15, 16, 10, 9, 7, 17] และ [15, 16, 40, 6, 9] จะมีโหนดทั่วไป 3 โหนด เดินทางผ่านทั้งสองรายการจนถึงท้ายรายการโดยใช้ลูปซ้อนสองชั้น สำหรับทุกโหนดในรายการ ตรวจสอบว่ามันตรงกับโหน

  13. หาจำนวนการกระโดดเพื่อไปถึง X บนเส้นจำนวนจากศูนย์ใน C++

    สมมติว่ามีจำนวนเต็ม X เราต้องหาจำนวนการกระโดดขั้นต่ำที่จำเป็นเพื่อไปถึง X จาก 0 การกระโดดครั้งแรกสามารถเป็นความยาว 1 หน่วย และการกระโดดต่อไปแต่ละครั้งจะยาวกว่าการกระโดดก่อนหน้าอย่างแน่นอน 1 หน่วย สามารถไปทางซ้ายหรือขวาได้ในแต่ละครั้ง ดังนั้นถ้า X = 8 ผลลัพธ์คือ 4 0 → -1 → 1 → 4 → 8 เป็นขั้นตอนที่เป็

  14. หาความห่างระหว่างสองโหนดของต้นไม้ไบนารีใน C++

    พิจารณาว่ามีต้นไม้ไบนารีที่มีโหนดอยู่บ้าง เราต้องหาความห่างระหว่างสองโหนด u และ v สมมติว่าต้นไม้เป็นแบบด้านล่าง: ตอนนี้ ระยะห่างระหว่าง (4, 6) = 4 ความยาวเส้นทางคือ 4 ระยะห่างระหว่าง (5, 8) = 5 เป็นต้น เพื่อแก้ปัญหานี้ เราจะหา LCA (Lowest Common Ancestor) แล้วคำนวณระยะห่างจาก LCA ไปยังสองโหนด ตัวอย

  15. หาจำนวนวิธีแบ่งตัวเลขเป็น 4 ส่วน ที่ a=c และ b=d ใน C++

    สมมติว่ามีตัวเลข n เราต้องหาจำนวนวิธีในการแบ่งตัวเลขเป็นส่วน (a, b, c และ d) ซึ่ง a = c และ b = d ดังนั้นถ้าตัวเลขคือ 20 ผลลัพธ์จะเป็น 4 คือ [1, 1, 9, 9], [2, 2, 8, 8], [3, 3, 7, 7] และ [4, 4, 6, 6] ดังนั้นถ้า N เป็นคี่ คำตอบจะเป็น 0 ถ้าตัวเลขหารด้วย 4 ลงตัว คำตอบจะเป็น n/4 – 1 มิฉะนั้นคือ n/4 ตัวอย

  16. หาความห่างจากรูทไปยังโหนดที่กำหนดในต้นไม้ไบนารีด้วย C++

    พิจารณาว่ามีต้นไม้ไบนารีที่มีโหนดอยู่บ้าง เราต้องหาความห่างระหว่างรูทและอีกโหนดหนึ่ง u สมมติว่าต้นไม้เป็นแบบด้านล่าง: ตอนนี้ ระยะห่างระหว่าง (root, 6) = 2 ความยาวเส้นทางคือ 2 ระยะห่างระหว่าง (root, 8) = 3 เป็นต้น เพื่อแก้ปัญหานี้ เราจะใช้วิธีแบบเรียกซ้ำ (Recursive) เพื่อค้นหาโหนดในต้นไม้ย่อยซ้ายและ

  17. หาผลคูณของจำนวนเฉพาะ N ตัวแรกใน C++

    สมมติว่ามีตัวเลข n เราต้องหาผลคูณของจำนวนเฉพาะระหว่าง 1 ถึง n ดังนั้นถ้า n = 7 ผลลัพธ์จะเป็น 210 เพราะ 2 * 3 * 5 * 7 = 210 เราจะใช้วิธี Sieve of Eratosthenes เพื่อหาจำนวนเฉพาะทั้งหมด จากนั้นคำนวณผลคูณของพวกมัน ตัวอย่าง #include <iostream> using namespace std; long PrimeProds(int n) { bo

  18. หาค่าซ้ำในอาร์เรย์ด้วยเวลา O(n) และพื้นที่เพิ่มเติม O(1) ใน C++

    สมมติว่ามีรายการตัวเลขจาก 0 ถึง n-1 ตัวเลขอาจซ้ำได้หลายครั้ง เราต้องหาตัวเลขที่ซ้ำโดยไม่ใช้พื้นที่เพิ่มเติม ถ้าค่า n = 7 และรายการเป็น [5, 2, 3, 5, 1, 6, 2, 3, 4, 5] คำตอบจะเป็น 5, 2, 3 เพื่อแก้ปัญหานี้ เราต้องทำตามขั้นตอนเหล่านี้: สำหรับแต่ละองค์ประกอบ e ในรายการ ทำขั้นตอนต่อไปนี้ sign := A[ค่าสั

  19. หาผลรวมของหลักเลขคี่และคู่ของจำนวนเต็มใน C++

    สมมติว่าเรามีจำนวนเต็ม N เราต้องหาผลรวมของหลักเลขในตำแหน่งคี่และตำแหน่งคู่ ดังนั้นถ้าตัวเลขเป็น 153654 ผลรวมตำแหน่งคี่ = 9 และผลรวมตำแหน่งคู่ = 15 เพื่อแก้ปัญหานี้ เราสามารถแยกหลักเลขทั้งหมดจากหลักสุดท้าย หากตัวเลขต้นฉบับมีจำนวนหลักเป็นคี่ หลักสุดท้ายต้องอยู่ในตำแหน่งคี่ มิฉะนั้นจะเป็นตำแหน่งคู่ หลั

  20. หาองค์ประกอบในอาร์เรย์เรียงลำดับที่มีความถี่มากกว่าหรือเท่ากับ n/2 ด้วย C++

    พิจารณาว่ามีอาร์เรย์ขนาด n อาร์เรย์นี้ถูกเรียงลำดับ มีองค์ประกอบหนึ่งที่มีความถี่มากกว่าหรือเท่ากับ n/2 โดยที่ n คือจำนวนองค์ประกอบในอาร์เรย์ ดังนั้นถ้าอาร์เรย์เป็น [3, 4, 5, 5, 5] ผลลัพธ์จะเป็น 5 ถ้าเราสังเกตประเภทอาร์เรย์นี้อย่างใกล้ชิด เราจะสังเกตได้ง่ายๆ ว่าตัวเลขที่มีความถี่มากกว่าหรือเท่ากับ n

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:104/301  20-คอมพิวเตอร์/Page Goto:1 98 99 100 101 102 103 104 105 106 107 108 109 110