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

    โจทย์ ได้รับตัวเลข x และ y ทางเราต้อง หาว่า x^y หรือ y^x ใหญ่กว่ากัน ตัวอย่าง Input: x = 4, y = 5 Output: 5^4 = 625) แนวทางแก้ปัญหา ใช้ ลอการิทึม เพื่อหลีกเลี่ยงการล้น (Overflow): เปรียบเทียบ y*log(x) กับ x*log(y) ค่าที่มากกว่าแสดงว่ากำลังนั้นใหญ่กว่า โปรแกรมตัวอย่าง xlogy) cout << x

  2. หาเลขที่ใหญ่ที่สุดแต่น้อยกว่า N ที่มีหลักเดียวกันใน C++

    โจทย์ ได้รับสตริง N แทนตัวเลข ทางเราต้อง หาเลขที่ใหญ่ที่สุดแต่น้อยกว่า N ที่ใช้หลักตัวเลขเดียวกัน ตัวอย่าง Input: N = 54314 Output: 54341 แนวทางแก้ปัญหา คล้ายกับ Previous Permutation: สแกนจากขวาไปซ้าย หาตำแหน่ง i ที่ N[i] < N[i-1] หาตัวเลขในส่วนขวาที่ น้อยกว่า N[i-1] แต่มากที่สุด สลับ แล้วเ

  3. หาผลรวมซับต้นไม้ที่มากที่สุดใน Binary Tree ใน C++

    โจทย์ ได้รับ Binary Tree ที่มีค่าบวกและลบ ทางเราต้อง หาผลรวมของซับต้นไม้ (Subtree) ที่มีค่ามากที่สุด ตัวอย่าง Input: ต้นไม้ดังภาพ (รูท=5, ซ้าย=-4, ขวา=4, ...) Output: 13 อธิบาย: ซับต้นไม้ซ้ายรวม=7, ขวา=1, ต้นไม้ทั้งหมด=13 แนวทางแก้ปัญหา ใช้ Post-order Traversal คำนวณผลรวมของซับต้นไม้ซ้ายและขวา แล้

  4. หาผลรวมตัวเลขสูงสุดของตัวหารทั้งหมดของ n ใน C++

    โจทย์ ได้รับจำนวนเต็ม n ทางเราต้อง หาผลรวมตัวเลขสูงสุดในตัวหารทั้งหมดของ n ตัวอย่าง Input: 18 Output: 9 อธิบาย: ผลรวมตัวเลขสูงสุดคือ 9 (จาก 9 และ 18) แนวทางแก้ปัญหา วิธีแบบง่าย: วนหาตัวหารทุกตัว คำนวณผลรวมตัวเลข หาค่าสูงสุด วิธีที่ดีกว่า (O(√n)): วนแค่ถึง √n หาตัวหารคู่ (i และ n/i) พร้อมกัน โปรแก

  5. หาตัวเลขหลักสุดท้ายของ a^b สำหรับตัวเลขขนาดใหญ่ใน C++

    โจทย์ ได้รับตัวเลข a และ b (อาจใหญ่มาก) ทางเราต้อง หาตัวเลขหลักสุดท้ายของ a^b ตัวอย่าง Input: a = 4, b = 124 Output: 6 แนวทางแก้ปัญหา หลักสุดท้ายของกำลังมีรูปแบบซ้ำทุก 4 ช่วง (Cyclicity): หลักสุดท้ายของฐาน (a % 10) กำหนดรูปแบบ เลขชี้กำลังใช้ b % 4 (ถ้าเป็น 0 ให้ใช้ 4) คำนวณ (last_digit)^exp

  6. หาตัวเลข 5 หลักสุดท้ายของเลข 5 หลักยกกำลัง 5 ใน C++

    โจทย์ ได้รับจำนวน N (5 หลัก) ทางเราต้อง หาตัวเลข 5 หลักสุดท้ายของ N^5 ตัวอย่าง Input: N = 25211 Output: (ตัวอย่างโค้ดใช้ 12345 ได้ 65625) แนวทางแก้ปัญหา ต้องการเฉพาะ 5 หลักสุดท้าย ใช้ Modulo 100000 หลังการคูณทุกครั้ง: เริ่ม result = 1 วน 5 รอบ: result = (result * N) % 100000 โปรแกรมตัวอย่าง

  7. หาความยาวเส้นทแยงมุมของหกเหลี่ยมปกติใน C++

    โจทย์ ได้รับจำนวนเต็ม n แทนความยาวด้านของหกเหลี่ยมปกติ (Regular Hexagon) ทางเราต้อง หาความยาวเส้นทแยงมุมของหกเหลี่ยม ตัวอย่าง Input: a = 7 Output: 12.11 แนวทางแก้ปัญหา เส้นทแยงมุมของหกเหลี่ยมปกติมีความยาว d = 1.73 * a (ประมาณ √3 * a) การพิสูจน์: d = 2 * 0.866 * a = 1.732 * a โปรแกรมตัวอย่าง #incl

  8. หาความยาวของลูปใน Linked List ใน C++

    โจทย์ ได้รับ Linked List ที่อาจมีลูป (Loop) ทางเราต้อง หาความยาวของลูปใน Linked List ตัวอย่าง Input: Linked List ที่มีลูป (ภาพ) Output: 8 (ตัวอย่างในโจทย์) / 6 (ตัวอย่างในโค้ด) แนวทางแก้ปัญหา ใช้ Floyds Cycle Finding Algorithm (Tortoise and Hare): ใช้ Pointer สองตัว: Slow (ก้าวละ 1) และ Fast (ก

  9. หาความยาวของภูมิภาคที่ใหญ่ที่สุดใน Boolean Matrix ใน C++

    โจทย์ ได้รับเมทริกซ์ 2D ขนาด n x m ประกอบด้วย 0 และ 1 ทางเราต้อง หาความยาวของภูมิภาค (Region) ที่ใหญ่ที่สุดใน Boolean Matrix โหนดที่มีค่า 1 เรียกว่า Filled Cell ภูมิภาคคือกลุ่มเซลล์ 1 ที่เชื่อมต่อกันใน 8 ทิศทาง (แนวนอน แนวตั้ง แนวทแยง) ตัวอย่าง Input: matrix[4][5] = {{0,1,1,0,1}, {0,0,1,1,1}, {1,0,

  10. หาตำแหน่งตัวอักษรในอัลฟาเบทด้วยบิตเวิร์ก (Bit Operation) ใน C++

    โจทย์ ได้รับสตริง str ประกอบด้วยตัวอักษรอังกฤษ ทางเราต้อง หาตำแหน่งของแต่ละตัวอักษรในอัลฟาเบทโดยใช้บิตเวิร์ก ไม่สนใจตัวพิมพ์เล็ก/ใหญ่ (Case-insensitive) ตัวอย่าง Input: str = Tutorialspoint Output: 20 21 20 15 18 9 1 12 19 16 15 9 14 20 แนวทางแก้ปัญหา รหัส ASCII ของ A = 65 (0b1000001), a = 97 (0b1

  11. หาตัวเลขที่ยาวที่สุดในสตริงใน C++

    โจทย์ ได้รับสตริง str ประกอบด้วยตัวอักษรและตัวเลข ทางเราต้อง หาตัวเลขที่มีความยาวมากที่สุดในสตริง ตัวอย่าง Input: str = code001tutorials34124point Output: 34124 อธิบาย: ตัวเลขในสตริง: 001 (ยาว 3), 34124 (ยาว 5) แนวทางแก้ปัญหา ท่องสตริงนับความยาวของตัวเลขติดต่อกัน (Consecutive Digits) เก็บตำแหน่งเร

  12. หาเลขที่ M-th ที่ผลรวมตัวเลขซ้ำจนเหลือ 1 หลักเท่ากับ N ใน C++

    โจทย์ ได้รับจำนวนบวก N และ M ทางเราต้อง หาเลขที่ M-th ที่ผลรวมตัวเลขซ้ำจนเหลือ 1 หลัก (Digital Root) เท่ากับ N ตัวอย่าง Input: N = 4, M = 6 Output: 49 แนวทางแก้ปัญหา สังเกตว่า Digital Root ของจำนวนเต็มบวกจะวนรอบทุก 9 ตัว (1-9, 10-18, ...) สูตรโดยตรง: M-th number = (M-1)*9 + N โปรแกรมตัวอย่าง #inc

  13. หาค่าที่ m-th น้อยที่สุดใน k อาร์เรย์ที่เรียงแล้วใน C++

    โจทย์ ได้รับ k อาร์เรย์ที่เรียงแล้ว ขนาดต่างกัน ทางเราต้อง หาค่าที่ m-th น้อยที่สุดในอาร์เรย์ที่รวมกันทั้งหมด ตัวอย่าง Input: m = 4, arr[][] = {{4, 7}, {2, 5, 6}, {3, 9, 12, 15, 19}} Output: 5 อธิบาย: ตัวที่ 4 คือ 5 แนวทางแก้ปัญหา วิธีแบบง่าย: รวมอาร์เรย์ทั้งหมด เรียง แล้วหาตัวที่ (m-1) วิธีที่มีป

  14. หาผลรวมที่ m ของ n จำนวนธรรมชาติแรกใน C++

    โจทย์ ได้รับจำนวนเต็ม m และ n ทางเราต้อง หาผลรวมที่ m ของ n จำนวนธรรมชาติแรก นิยาม: sum(n, m) คือ การหาผลรวมของ n จำนวนแรก แล้วนำผลรวมนั้นไปเป็น n ใหม่ ทำซ้ำ m รอบ ตัวอย่าง Input: m = 4, n = 2 Output: 231 อธิบาย: sum(2, 4) = sum(sum(2, 3), 1) = sum(sum(sum(2, 2), 1), 1) = sum(s

  15. หาค่าสูงสุดของจำนวนตรรกยะสองจำนวนใน C++

    โจทย์ ได้รับ จำนวนตรรกยะ (Rational Numbers) สองจำนวนในรูป p/q ทางเราต้อง หาค่าสูงสุดของจำนวนตรรกยะทั้งสอง ตัวอย่าง Input: rat1 = 5/4, rat2 = 3/2 Output: 3/2 อธิบาย: 5/4 = 1.25, 3/2 = 1.5 แนวทางแก้ปัญหา ใช้วิธีหา ค่าต่ำสุดที่หารด้วยตัวส่วนทั้งสองได้ (L.C.M.): หา L.C.M. ของตัวส่วน ปรับตัวเศษให้

  16. หาค่าสูงสุดและต่ำสุดใน Binary Tree ใน C++

    โจทย์ ได้รับ Binary Tree ทางเราต้อง หาค่าสูงสุดและต่ำสุดใน Binary Tree ตัวอย่าง Input: ต้นไม้ดังภาพ (โหนดมีค่า 1, 2, 3, 5, 6, 8, 9) Output: max = 9, min = 1 แนวทางแก้ปัญหา ท่องต้นไม้แบบ Post-order (หรือ Pre-order ก็ได้) เพื่อหาค่าสูงสุดและต่ำสุด: ถ้าโหนดเป็น NULL คืนค่าที่เหมาะสม (เช่น -INF สำห

  17. หาผลรวมสูงสุด (หรือต่ำสุด) ของซับอาร์เรย์ขนาด k ใน C++

    โจทย์ ได้รับอาร์เรย์ arr[] และจำนวน k ทางเราต้อง หาผลรวมสูงสุด (หรือต่ำสุด) ของซับอาร์เรย์ที่มีขนาด k ตัวอย่าง Input: arr[] = {55, 43, 12, 76, 89, 25, 99}, k = 2 Output: 165 อธิบาย: ซับอาร์เรย์ขนาด 2 ที่มีผลรวมมากที่สุดคือ 76 + 89 = 165 แนวทางแก้ปัญหา วิธีแบบง่าย: หาผลรวมของทุกซับอาร์เรย์ขนาด k แล

  18. หาค่าสูงสุดในโหนดขวาของ Binary Tree ใน C++

    โจทย์ ได้รับ Binary Tree ทางเราต้อง หาค่าสูงสุดในโหนดขวาทั้งหมดของ Binary Tree ตัวอย่าง Input: ต้นไม้ดังภาพ (โหนดขวาคือ 2, 8, 9) Output: 9 แนวทางแก้ปัญหา ท่องต้นไม้ (Tree Traversal) ตรวจสอบว่าโหนดขวา (right child) มีอยู่หรือไม่ ถ้ามี ให้เปรียบเทียบกับค่าสูงสุดที่พบจนถึงตอนนั้น และอัปเดตค่าสูงสุด

  19. หาค่าสูงสุดระหว่าง x^(y^2) และ y^(x^2) ใน C++

    โจทย์ ได้รับค่า x และ y ทางเราต้อง หาค่าที่มากกว่าระหว่าง x^(y^2) และ y^(x^2) ตัวอย่าง Input: x = 4, y = 3 Output: 3^(4^2) อธิบาย: x^(y^2) = 4^(3^2) = 4^9 = 262,144 y^(x^2) = 3^(4^2) = 3^16 = 43,046,721 แนวทางแก้ปัญหา การคำนวณค่าจริงอาจล้นได้เมื่อตัวเลขใหญ่ ใช้ ลอการิทึมธรรมชาติ (ln) เพื่อเป

  20. หาค่าเฉลี่ยสูงสุดของซับอาร์เรย์ความยาว k ใน C++

    โจทย์ ได้รับอาร์เรย์ arr[] ขนาด n ที่ประกอบด้วยค่าบวกและลบ และจำนวนเต็ม k ทางเราต้อง หาค่าเฉลี่ยสูงสุดของซับอาร์เรย์ที่มีความยาว k ตัวอย่าง Input: arr[] = {4, -1, 5, 6, -2, 4}, k = 3 Output: 10 อธิบาย: ซับอาร์เรย์ขนาด 3 ที่มีผลรวมมากที่สุดคือ -1, 5, 6 = 10 แนวทางแก้ปัญหา ใช้ อาร์เรย์สะสม (Auxiliar

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:248/301  20-คอมพิวเตอร์/Page Goto:1 242 243 244 245 246 247 248 249 250 251 252 253 254