Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. ฟังก์ชัน sin() สำหรับจำนวนเชิงซ้อน (Complex Number) ใน C++

    บทความนี้สาธิตการใช้งานฟังก์ชัน sin() สำหรับจำนวนเชิงซ้อนใน C++ ฟังก์ชันนี้อยู่ในเฮดเดอร์ <complex> จึงต้อง include ไฟล์นี้ก่อนใช้งาน ในคณิตศาสตร์ ฟังก์ชันนี้คำนวณค่าไซน์ของจำนวนเชิงซ้อน ไวยากรณ์ (Syntax) sin(z); พารามิเตอร์ z – จำนวนเชิงซ้อนที่ต้องการคำนวณ (พารามิเตอร์บังคับ) ประเภทค่าที่ส

  2. ฟังก์ชัน map::count() ใน C++ STL

    บทความนี้จะอธิบายการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน map::count() ใน C++ STL Map ใน C++ STL คืออะไร? Map เป็นคอนเทนเนอร์แบบ associative ที่จัดเก็บข้อมูลเป็นคู่คีย์-ค่า (key-value pairs) โดยข้อมูลจะถูกจัดเรียงอัตโนมัติตามคีย์ คีย์แต่ละตัวมีค่าเป็นเอกลักษณ์ (unique) และใช้สำหรับเข้าถึงค่าที่เกี่

  3. Upper Bound และ Lower Bound สำหรับเวกเตอร์เรียงลำดับไม่เพิ่ม (Non-increasing) ใน C++

    บทความนี้จะอธิบายการใช้ vector::upper_bound() และ vector::lower_bound() สำหรับอาร์เรย์ที่เรียงลำดับแบบไม่เพิ่ม (non-increasing order) ใน C++ STL เวกเตอร์ (Vector) คล้ายกับอาร์เรย์ไดนามิก ที่สามารถปรับขนาดได้เองเมื่อมีการเพิ่มหรือลบข้อมูลในคอนเทนเนอร์ ในเวกเตอร์ที่เรียงลำดับไม่เพิ่ม (มากไปน้อย): L

  4. วิธีการคัดลอกข้อมูลใน C++ STL: std::copy(), copy_n(), copy_if(), copy_backward()

    ซึ่งชื่อเมธอดบ่งชี้ว่า copy() ใช้สำหรับคัดลอกข้อมูลผ่านวิธีการต่างๆ ที่มีใน C++ STL เมธอดทั้งหมดแตกต่างกันในด้านฟังก์ชันการทำงานและพารามิเตอร์ เมธอดเหล่านี้พร้อมใช้งานในไฟล์เฮดเดอร์ <algorithm> มาดูรายละเอียดแต่ละเมธอดและฟังก์ชันการทำงานกัน copy(start_i1, end_i1, start_i2) เมธอดนี้ใช้คัดลอกข้

  5. คำสั่งเพิ่ม ลบ และหาความต่าง Max-Min ใน C++

    ภาพรวมปัญหา ประมวลผล Q คำสั่ง 3 ประเภท: Type 1: เพิ่มตัวเลข N เข้ารายการ Type 2: ลบตัวเลข N ออกจากรายการ Type 3: คืนค่าความต่างระหว่างค่าสูงสุดและต่ำสุดในรายการ ตัวอย่าง max=9, min=3, diff=6 Output: 6 วิธีแก้ปัญหา วิธีอาร์เรย์ธรรมดา - O(N) ต่อคำถาม Type 3 วนหา Max/Min ทุกครั้งที่ถาม วิธี Set

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

    ภาพรวมปัญหา หาความห่างระหว่างสองโหนดในต้นไม้ไบนารี (จำนวนขอบขั้นต่ำที่ต้องเดิน) ตัวอย่าง 5 (3 edges) แนวทางแก้ปัญหา หา Lowest Common Ancestor (LCA) ของสองโหนด สูตร: Distance = Dist(root, n1) + Dist(root, n2) - 2×Dist(root, LCA) ใช้ Recursion หา LCA และระยะทางพร้อมกัน ตัวอย่างโค้ด C++ left = i

  7. ค้นหาซับสตริงที่เล็กที่สุดอันดับ X แบบ Lexicographical ใน C++

    ภาพรวมปัญหา ได้รับสตริง str และ Q คำถาม แต่ละคำถามมีตัวเลข X หาซับสตริงที่เล็กที่สุดอันดับ X เมื่อเรียงตามลำดับเลขโครม (Lexicographical) ตัวอย่าง Input: str = point, Q = 4 Queries: 4, 7, 2, 13 All substrings sorted: i, in, int, n, nt, o, oi, oin, oint, p, po, poi, poin, point, t Output: n, oi, in,

  8. ตรวจสอบตัวเลขอยู่ในช่วง L-R ใดช่วงหนึ่งหรือไม่ใน C++

    ภาพรวมปัญหา ได้รับ N ช่วง [L, R] และ Q คำถาม แต่ละคำถามมีค่า val ตรวจสอบว่า val อยู่ในช่วงใดช่วงหนึ่งหรือไม่ ตัวอย่าง Ranges: {2,4}, {6,7}, {9,12} Queries: 1, 7, 10 Output: Not Present, Present, Present แนวทางแก้ปัญหา เก็บ L และ R ทั้งหมดใน Vector แล้ว Sort ใช้ HashMap บันทึกว่าแต่ละค่าเป็น L (ค

  9. ตรวจสอบการเชื่อมกล่องเป็นวงกลมได้หรือไม่ใน C++

    ภาพรวมปัญหา มีกล่องเรียงเป็นวงกลม 1 ถึง n ตรวจสอบว่าเชื่อมกล่อง i กับ j ด้วยท่อนได้หรือไม่ โดยไม่ให้ท่อนตัดกัน ตัวอย่างโค้ด C++ #include <bits/stdc++.h> using namespace std; void isPossible(int n, int q, int queryi[], int queryj[]) { int arr[50] = {0}; for (int k = 0; k < q; k++) {

  10. ตรวจสอบตัวเลขในช่วงที่กำหนดด้วย Segment Tree ใน C++

    ภาพรวมปัญหา ได้รับอาร์เรย์และ Q คำถาม แต่ละคำถามมีช่วง [L, R] และค่า val ตรวจสอบว่า val มีอยู่ในช่วงนั้นหรือไม่ ตัวอย่าง 2 present วิธีแก้ปัญหา วิธีตรวจสอบตรง - O(N) ต่อคำถาม วนลูปตรวจสอบในช่วง [L, R] วิธี Segment Tree + Set - O(log N) ต่อคำถาม แต่ละโหนดเก็บ Set ของตัวเลขที่ปรากฏในช่วงนั้น (ส

  11. นับคู่ที่เป็นร่วมเฉพาะ (Coprime) จาก 1 ถึง N ใน C++

    ภาพรวมปัญหา ได้รับ Q คำถาม แต่ละคำถามมี N หาจำนวนคู่ที่ไม่มีลำดับ (unordered pairs) ที่เป็นร่วมเฉพาะ (Coprime) ในช่วง 1 ถึง N ตัวอย่าง Input: Q = 2, queries = [5, 6] Output: 10, 18 Pairs for N=5: (1,1),(1,2),(1,3),(1,4),(1,5),(2,3),(2,5),(3,4),(3,5),(4,5) แนวทางแก้ปัญหา ใช้ Eulers Totient Functi

  12. ค้นหาระยะห่างระหว่างสองโหนดในต้นไม้ไบนารี O(log n) ใน C++

    ภาพรวมปัญหา หาความห่างระหว่างสองโหนดในต้นไม้ไบนารี (จำนวนขอบที่ต้องเดิน) โดยใช้วิธี O(log n) ต่อคำถาม หลักการ Distance(u, v) = Level[u] + Level[v] - 2 × Level[LCA(u, v)] ใช้ Euler Tour + Segment Tree เพื่อหา LCA แบบ O(log n) ขั้นตอน คำนวณ Level ของทุกโหนดด้วย BFS สร้าง Euler Tour Array สร้าง Seg

  13. ค้นหาคู่ที่มีผลคูณสูงสุดในช่วงพร้อมอัปเดตใน C++

    ภาพรวมปัญหา ได้รับอาร์เรย์และ Q คำถาม 2 ประเภท: Type 1: หาคู่ที่มีผลคูณสูงสุดในช่วง [L, R] Type 2: อัปเดตค่าที่ดัชนี i ตัวอย่าง max product = 4×3 = 12 วิธีแก้ปัญหา วิธีง่าย - O(n²) ต่อคำถาม วนลูปหาคู่อย่างครบ วิธี Segment Tree - O(log n) ต่อคำถาม เก็บค่าสูงสุด 2 อันดับ (max, second max) ในแ

  14. ค้นหาตัวอักษรที่ไม่ซ้ำตัวสุดท้ายในซับสตริงใน C++

    ภาพรวมปัญหา ได้รับสตริง str และ Q คำถาม แต่ละคำถามมีช่วง [L, R] หาตัวอักษรที่ไม่ซ้ำ (non-repeating) ตัวสุดท้ายในซับสตริง str[L..R] ตัวอย่าง last non-repeating = a แนวทางแก้ปัญหา สร้างตารางความถี่สะสม charFreq[256][n] สำหรับแต่ละตัวอักษร สำหรับแต่ละคำถาม ตรวจสอบจากขวาไปซ้าย หาตัวอักษรที่มีความถี

  15. ตรวจสอบตัวเลขที่มีตัวประกอบ 4 ตัวแตกต่างกันใน C++

    ภาพรวมปัญหา ได้รับ Q คำถาม แต่ละคำถามมีตัวเลข N ตรวจสอบว่า N มีตัวประกอบที่แตกต่างกันพอดี 4 ตัวหรือไม่ ตัวอย่าง YES วิธีแก้ปัญหา วิธีตรวจสอบตัวประกอบ - O(√N) นับตัวประกอบจาก 1 ถึง √N วิธีทฤษฎีจำนวน (Number Theory) - O(1) ต่อคำถามหลังการเตรียม ตัวเลขมีตัวประกอบ 4 ตัวได้ 2 กรณี: กำลังสามของจำนว

  16. ผลรวมของผลคูณทุกซับเซ็ตที่เป็นไปได้ใน C++

    ภาพรวมปัญหา หาผลรวมของผลคูณของทุกซับเซ็ต (ยกเว้นเซ็ตว่าง) ของอาร์เรย์ arr[] ขนาด N ตัวอย่าง Input: arr[] = {4, 5, 6} Output: 209 Explanation: Subsets: {4},{5},{6},{4,5},{5,6},{4,6},{4,5,6} Products: 4+5+6+20+30+24+120 = 209 วิธีแก้ปัญหา วิธีสร้างซับเซ็ตทั้งหมด - O(2ⁿ) ใช้บิตมาสก์วนทุกซับเซ็ต ว

  17. ผลรวมอนุกรม 0.7, 0.77, 0.777, ... จนถึง n พจน์ใน C++

    ภาพรวมปัญหา หาผลรวมของอนุกรม 0.7 + 0.77 + 0.777 + ... จนถึง n พจน์ ตัวอย่าง Input: n = 4 Output: 3.0247 Explanation: 0.7 + 0.77 + 0.777 + 0.7777 = 3.0247 การ 유도สูตร อนุกรม = 7/9 × [9n - 1 + 10⁻ⁿ] หรือประมาณการ: 0.08641 × (9n - 1) + 10⁻ⁿ ตัวอย่างโค้ด C++ #include <iostream> #include <mat

  18. ผลรวมอนุกรม 1/1 + (1+2)/(1×2) + (1+2+3)/(1×2×3) + ... จนถึง n พจน์ใน C++

    ภาพรวมปัญหา หาผลรวมของอนุกรม 1/1 + (1+2)/(1×2) + (1+2+3)/(1×2×3) + ... จนถึง n พจน์ ตัวอย่าง Input: n = 3 Output: 3.5 Explanation: 1/1 + 3/2 + 6/6 = 1 + 1.5 + 1 = 3.5 ตัวอย่างโค้ด C++ #include <iostream> using namespace std; double calcSeriesSum(int n) { double result = 0.0; int su

  19. ผลรวมอนุกรม 1 + (1+2) + (1+2+3) + ... + (1+2+...+n) ใน C++

    ภาพรวมปัญหา หาผลรวมของอนุกรมที่พจน์ที่ i คือผลรวมของจำนวนธรรมชาติ i ตัวแรก: 1 + (1+2) + (1+2+3) + ... ตัวอย่าง Input: n = 4 Output: 20 Explanation: (1) + (1+2) + (1+2+3) + (1+2+3+4) = 1+3+6+10 = 20 วิธีแก้ปัญหา วิธี Nested Loop - O(n²) for i=1 to n: for j=1 to i: sum += j; วิธีสูตรค

  20. ผลรวมอนุกรม 1 + (1+3) + (1+3+5) + ... + (1+3+...+(2n-1)) ใน C++

    ภาพรวมปัญหา หาผลรวมของอนุกรมที่พจน์ที่ i คือผลรวมของเลขคี่ i ตัวแรก: 1 + (1+3) + (1+3+5) + ... ตัวอย่าง Input: n = 3 Output: 14 Explanation: (1) + (1+3) + (1+3+5) = 1 + 4 + 9 = 14 วิธีแก้ปัญหา วิธี Nested Loop - O(n²) คำนวณเลขคี่สะสมทีละพจน์ วิธีสูตรคณิตศาสตร์ - O(1) ผลรวมเลขคี่ n ตัว = n² ผลรว

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:208/301  20-คอมพิวเตอร์/Page Goto:1 202 203 204 205 206 207 208 209 210 211 212 213 214