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

    ภาพรวมปัญหา ได้รับอาร์เรย์ arr[] ต้องหาสำหรับแต่ละองค์ประกอบ: Next Greater Element (NGE) - องค์ประกอบแรกทางขวาที่มากกว่า Next Smaller Element (NSE) ของ NGE นั้น - องค์ประกอบแรกทางขวาของ NGE ที่น้อยกว่า NGE ถ้าไม่มีให้คืน -1 ตัวอย่าง อินพุต arr[] = {4, 2, 8, 3, 9, 1} เอาต์พุต {3, 3, 1, 1, -1, -1}

  2. หา Sparse Number ถัดไปด้วย C++

    ภาพรวมปัญหา Sparse Number: จำนวนที่ในรูปแบบไบนารีไม่มี 1 ติดกัน ตัวอย่าง: 5 (101), 16 (10000) N ตัวอย่าง อินพุต N = 7 เอาต์พุต 8 คำอธิบาย 8 ในไบนารีคือ 1000 (ไม่มี 1 ติดกัน) วิธีแก้ปัญหา วิธีที่ 1: Brute Force - ตรวจสอบทีละตัว วิธีที่ 2: Bit Manipulation - O(log N) ⭐ แปลง N เป็นไบนารี แล้วแก้

  3. หาเลข Hermite ที่ N ด้วย C++

    ภาพรวมปัญหา หา Hermite Number Hₙ ซึ่งนิยามโดย: H₀ = 1, H₁ = 0 Hₙ = -2(n-1)Hₙ₋₂ สำหรับ n ≥ 2 ลำดับ: 1, 0, -2, 0, 12, 0, -120, 0, 1680, 0, -30240, ... ตัวอย่าง อินพุต N = 7 เอาต์พุต 0 อินพุต N = 6 เอาต์พุต -120 วิธีแก้ปัญหา วิธีที่ 1: Recursion int calcNHermiteNumber(int N) { if (N == 0) ret

  4. หาพจน์ที่ N ของอนุกรม 1, 6, 15, 28, 45... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 1, 6, 15, 28, 45, ... เงื่อนไข: ทุกพจน์น้อยกว่าค่าเฉลี่ยของพจน์ก่อนและหลัง 2 หน่วย ตัวอย่าง อินพุต N = 5 เอาต์พุต 45 วิธีแก้ปัญหา สูตรทั่วไป: T(N) = 2N² - N โค้ดตัวอย่าง #include <iostream> using namespace std; #define MOD 1000000009 int calcNthTerm(lon

  5. หาจำนวนเต็มบวกตัวที่ N ที่มี Digital Root เป็น X ด้วย C++

    ภาพรวมปัญหา ได้รับ N และ X หาตัวเลขบวกตัวที่ N ที่มี Digital Root เท่ากับ X Digital Root: ผลรวมหลักของตัวเลข ทำซ้ำจนเหลือ 1 หลัก Digital Root(40) = 4+0 = 4 Digital Root(38) = 3+8=11 → 1+1=2 ตัวอย่าง อินพุต N = 5, X = 4 เอาต์พุต 40 วิธีแก้ปัญหา วิธีที่ 1: Brute Force - O(N) นับตั้งแต่ 1 ขึ้นไปจน

  6. หาพจน์ที่ N ด้วย Matrix Exponentiation ใน C++

    ภาพรวมปัญหา หาพจน์ที่ N ของความสัมพันธ์แบบเวียนเกิด (Recurrence): T(n) = 2·T(n-1) + 3·T(n-2) T(0) = 1, T(1) = 1 ตัวอย่าง อินพุต N = 4 เอาต์พุต 41 วิธีแก้ปัญหา วิธีที่ 1: Recursion - O(2ⁿ) ช้า วิธีที่ 2: Matrix Exponentiation - O(log N) ⭐ แปลง Recurrence เป็นการคูณเมทริกซ์: State Vector: [T(n),

  7. หาพจน์ที่ N ของอนุกรม 1, 4, 15, 72, 420... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 1, 4, 15, 72, 420, ... ตัวอย่าง อินพุต N = 4 เอาต์พุต 72 วิธีแก้ปัญหา สังเกต: T(N) = N! × (N + 2) / 2 N=1: 1! × 3/2 = 1.5? → 1 (ปัดหรือสูตรต่างออกไป) N=2: 2! × 4/2 = 4 ✓ N=3: 6 × 5/2 = 15 ✓ N=4: 24 × 6/2 = 72 ✓ N=5: 120 × 7/2 = 420 ✓ โค้ดตัวอย่าง #include <i

  8. หาพจน์ที่ N ของอนุกรม 0, 2, 4, 8, 12, 18... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 0, 2, 4, 8, 12, 18, ... ตัวอย่าง อินพุต N = 5 เอาต์พุต 12 วิธีแก้ปัญหา สูตรทั่วไป: T(N) = (N + N×(N-1)) / 2 = N²/2 + N/2 หรือเขียนได้ว่า: T(N) = N(N+1)/2 - 1 + 1? ให้ตรวจสอบ: N=1: (1 + 0)/2 = 0.5? ไม่ตรง จริงๆ: T(N) = (N² + N - 2)/2 + 1? ลอง N=1: 0, N=2: 2, N=3

  9. หาพจน์ที่ N ของอนุกรม 1, 2, 2, 4, 4, 4, 4, 8... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 1, 2, 2, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, ... รูปแบบ: เลข 2ᵏ ปรากฏ 2ᵏ ครั้ง ตัวอย่าง อินพุต N = 7 เอาต์พุต 4 วิธีแก้ปัญหา วิธีที่ 1: Simulation - O(N) นับจำนวนพจน์จนถึง N วิธีที่ 2: สูตรทางคณิตศาสตร์ - O(1) ⭐ ตำแหน่งสุดท้ายของค่า 2ᵏ คือ 2ᵏ⁺¹ - 1 หา k ที่ทำใ

  10. หาพจน์ที่ N ของอนุกรม 1, 1, 2, 6, 24... (Factorial) ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 1, 1, 2, 6, 24, 120, 720, ... ตัวอย่าง อินพุต N = 7 เอาต์พุต 720 คำอธิบาย อนุกรมคือ Factorial: 0!, 1!, 2!, 3!, 4!, 5!, 6! ... T(N) = (N-1)! วิธีแก้ปัญหา คำนวณ Factorial ของ (N-1) โค้ดตัวอย่าง #include <iostream> using namespace std; int calcNthTerm(int N

  11. หาพจน์ที่ N ของอนุกรม 1, 5, 32, 288... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 1, 5, 32, 288, ... ตัวอย่าง อินพุต N = 4 เอาต์พุต 288 คำอธิบาย 4⁴ + 3³ + 2² + 1¹ = 256 + 27 + 4 + 1 = 288 วิธีแก้ปัญหา สูตรทั่วไป: T(N) = Σᵢ₌₁ᴺ iⁱ (ผลรวมของ i ยกกำลัง i) หมายเหตุ: โค้ดต้นฉบับมีข้อผิดพลาด (คำนวณ factorial แทน) โค้ดด้านล่างแก้ไขแล้ว โค้ดตัวอย่าง

  12. หาพจน์ที่ N ของอนุกรม 1, 6, 18, 40, 75... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 1, 6, 18, 40, 75, ... ตัวอย่าง อินพุต N = 4 เอาต์พุต 40 คำอธิบาย 4 × 4 × 5 / 2 = 40 วิธีแก้ปัญหา สูตรทั่วไป: T(N) = N² × (N + 1) / 2 โค้ดตัวอย่าง #include <iostream> using namespace std; int calcNthTerm(int N) { return (N * N * (N + 1)) / 2; } int m

  13. หาพจน์ที่ N ของอนุกรม 1, 8, 54, 384... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 1, 8, 54, 384, ... ตัวอย่าง อินพุต N = 4 เอาต์พุต 384 คำอธิบาย 4 × 4 × 4! = 16 × 24 = 384 วิธีแก้ปัญหา สูตรทั่วไป: T(N) = N × N × N! = N² × N! โค้ดตัวอย่าง #include <iostream> using namespace std; int calcFact(int N) { int fact = 1; for (int i =

  14. หาพจน์ที่ N ของอนุกรม 3, 14, 39, 84... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 3, 14, 39, 84, ... ตัวอย่าง อินพุต N = 4 เอาต์พุต 84 คำอธิบาย 4³ + 4² + 4 = 64 + 16 + 4 = 84 วิธีแก้ปัญหา สูตรทั่วไป: T(N) = N³ + N² + N โค้ดตัวอย่าง #include <iostream> using namespace std; int calcNthTerm(int N) { return (N * N * N) + (N * N) + N;

  15. หาพจน์ที่ N ของอนุกรม 5, 2, 19, 13, 41... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 5, 2, 19, 13, 41, 31, 71, 57, ... ตัวอย่าง อินพุต N = 5 เอาต์พุต 41 วิธีแก้ปัญหา อนุกรมมีสูตรต่างกันสำหรับ index คู่และคี่: N เป็นเลขคู่ (Even): T(N) = (N-1)² + N N เป็นเลขคี่ (Odd): T(N) = (N+1)² + N โค้ดตัวอย่าง #include <iostream> using namespace std

  16. หาพจน์ที่ N ของอนุกรม 5, 13, 25, 41, 61... ด้วย C++

    ภาพรวมปัญหา หาพจน์ที่ N ของอนุกรม: 5, 13, 25, 41, 61, ... ตัวอย่าง อินพุต N = 5 เอาต์พุต 61 วิธีแก้ปัญหา สังเกตรูปแบบ: N=1: 5 = 1² + 2² N=2: 13 = 2² + 3² N=3: 25 = 3² + 4² N=4: 41 = 4² + 5² N=5: 61 = 5² + 6² สูตรทั่วไป: T(N) = N² + (N+1)² โค้ดตัวอย่าง #include <iostream> using namespace

  17. หาตัวเลขจากตัวหารของมันด้วย C++

    ภาพรวมปัญหา ได้รับอาร์เรย์ divisors[] ที่เป็นตัวหารของตัวเลข Num (ไม่รวม 1 และ Num เอง) ต้องหาตัวเลข Num ตัวอย่าง อินพุต divisors[] = {3, 25, 5, 15} เอาต์พุต 75 คำอธิบาย ตัวเลข 75 มีตัวหาร (ไม่รวม 1, 75) คือ {3, 5, 15, 25} วิธีแก้ปัญหา ข้อสังเกต: ตัวเลข Num = ตัวหารน้อยที่สุด × ตัวหารมากที่สุด

  18. หาจำนวนวันระหว่างสองวันที่ด้วย C++

    ภาพรวมปัญหา ได้รับวันที่สองวันในรูปแบบ DD-MM-YYYY (เก็บในอาร์เรย์ขนาด 3) ต้องหาจำนวนวันระหว่างสองวันนั้น ตัวอย่าง อินพุต date1[] = {13, 3, 2021}, date2[] = {24, 5, 2023} เอาต์พุต 802 คำอธิบาย ความต่าง: 2 ปี, 2 เดือน, 11 วัน 2×365 + (30+31) + 11 = 802 วิธีแก้ปัญหา วิธีที่ 1: วนลูปนับวัน - O(จำนวน

  19. หาจำนวน Endless Points ในเมทริกซ์ด้วย C++

    ภาพรวมปัญหา ได้รับเมทริกซ์ mat[n][m] ประกอบด้วย 0 และ 1 จุด (i,j) ถือว่าเป็น Endless Point ถ้า: ทุกเซลล์ด้านล่างในคอลัมน์เดียวกันเป็น 1: mat[i+1][j] ... mat[n-1][j] = 1 ทุกเซลล์ด้านขวาในแถวเดียวกันเป็น 1: mat[i][j+1] ... mat[i][m-1] = 1 ตัวอย่าง อินพุต mat[][] = { {0, 0}, {1, 1} } เอ

  20. หาจำนวน Positional Elements ในเมทริกซ์ด้วย C++

    ภาพรวมปัญหา ได้รับเมทริกซ์ mat[m][n] ต้องหาจำนวน Positional Elements ซึ่งคือองค์ประกอบที่เป็นค่าสูงสุดหรือต่ำสุดของแถวหรือคอลัมน์ที่มันอยู่ ตัวอย่าง อินพุต mat[][] = { {2, 5, 7}, {1, 3, 4}, {5, 1, 3} } เอาต์พุต 8 คำอธิบาย Positional Elements: 2, 5, 7, 1, 4, 5, 1, 3 วิธีแก้

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:262/301  20-คอมพิวเตอร์/Page Goto:1 256 257 258 259 260 261 262 263 264 265 266 267 268