Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. การหารด้วย DFA (DFA-based Division) ใน C++

    แนวคิด ใช้ DFA ตรวจสอบว่าเลขหารด้วย k ลงตัวหรือไม่ และหาเศษได้ โดยสร้าง Transition Table จากการแทนค่าในฐานสอง สร้าง Transition Table มี k states (0 ถึง k-1) แต่ละ state มี transition สำหรับ bit 0 และ 1 trans_0 = (state << 1) % k trans_1 = ((state << 1) + 1) % k อัลกอริธึม สร้าง Transition Table

  2. DFA สำหรับสตริงที่ไม่ลงท้ายด้วย "THE" ใน C++

    ปัญหา สร้าง DFA (Deterministic Finite Automaton) ที่ยอมรับสตริงที่ ไม่ลงท้ายด้วย THE (ไม่สนใจตัวพิมพ์เล็ก/ใหญ่) State Diagram State 0: เริ่มต้น / ไม่เจอ T State 1: เจอ T หรือ t State 2: เจอ TH หรือ Th หรือ tH หรือ th State 3: เจอ THE (Reject state) Transition Functions State 0: T/t → 1, อื่น →

  3. เส้นทแยงมุมของรูปหกเหลี่ยมสมมาตร (Regular Hexagon) ใน C++

    สูตร รูปหกเหลี่ยมสมมาตรประกอบด้วยสามเหลี่ยมด้านเท่า 6 รูป → เส้นทแยงมุมยาวที่สุด = 2 × ด้าน Diagonal = 2 × side โปรแกรมตัวอย่าง #include <iostream> using namespace std; int main() { float side = 12; if (side < 0) return -1; float diagonal = 2 * side; cout << Diagonal of regu

  4. เส้นทแยงมุมของรูปห้าเหลี่ยมสมมาตร (Regular Pentagon) ใน C++

    สูตร เส้นทแยงมุมของรูปห้าเหลี่ยมสมมาตร ที่มีด้าน = s Diagonal = (1 + √5) / 2 × s ≈ 1.618 × s (Golden Ratio × s) โปรแกรมตัวอย่าง #include <iostream> #include <cmath> using namespace std; int main() { float side = 5; if (side < 0) return -1; float diagonal = (1 + sqrt(5)) /

  5. ผลรวมแนวทแยงของต้นไม้แบบทวิภาค (Diagonal Sum) ใน C++

    แนวคิด Diagonal Sum: ผลรวมค่าของโหนดที่อยู่บนเส้นทแยงเดียวกัน (ความชัน -1) อัลกอริธึม Map: Key = depth, Value = ผลรวมค่าโหนด Recursive traversal: ซ้าย depth+1, ขวา depth คงเดิม สะสมค่าใน map[depth] โปรแกรมตัวอย่าง right = new Node(5); map<int, int> sumMap; diagonalSum(root, 1

  6. การท่องต้นไม้แบบทวิภาคแบบแนวทแยง (Diagonal Traversal) ใน C++

    แนวคิด Diagonal Traversal: ท่องโหนดที่อยู่บนเส้นทแยงเดียวกัน (ความชัน -1) กลุ่มโหนดตามระยะห่างแนวทแยง (Diagonal Distance) อัลกอริธึม ใช้ Map: Key = diagonal depth, Value = vector ของค่าโหนด Inorder traversal: ไปซ้าย depth+1, ไปขวา depth คงเดิม พิมพ์แต่ละ diagonal ตามลำดับ depth โปรแกรมตัวอย่าง

  7. เมทริกซ์เฉพาะเจาะจงแนวทแยง (Diagonally Dominant Matrix) ใน C++

    นิยาม เมทริกซ์เป็น Diagonally Dominant ถ้าทุกแถว ค่าสัมบูรณ์ของสมาชิกแนวทแยง มากกว่าหรือเท่ากับผลรวมค่าสัมบูรณ์ของสมาชิกอื่นในแถวเดียวกัน |aᵢᵢ| ≥ Σ|aᵢⱼ| (สำหรับ j ≠ i) อัลกอริธึม วนลูปทุกแถว i คำนวณผลรวมค่าสัมบูรณ์ทั้งแถว ลบ |aᵢᵢ| ออก ตรวจสอบ |aᵢᵢ| < ผลรวมที่เหลือ → ไม่ใช่ Diagonally Dominant โ

  8. เส้นผ่านศูนย์กลางต้นไม้แบบทวิภาค (Diameter of Binary Tree) O(n) ใน C++

    แนวคิด เส้นผ่านศูนย์กลาง = left_height + right_height + 1 สำหรับแต่ละโหนด คำนวณความสูงและอัปเดตเส้นผ่านศูนย์กลางพร้อมกันใน O(n) โครงสร้างโหนด struct Node { int data; Node *left, *right; Node(int val) : data(val), left(nullptr), right(nullptr) {} }; ฟังก์ชันคำนวณ right, ans); ans =

  9. วิธีดึงลิงก์เว็บไซต์ด้วย Invoke-WebRequest ใน PowerShell

    คำสั่งพื้นฐาน $req = Invoke-WebRequest -uri https://example.com $req.Links ดึงเฉพาะ URL (href) $req.Links | Select-Object -ExpandProperty href ตัวอย่างผลลัพธ์ https://example.com/page1 https://example.com/page2 https://example.com/category/powershell/ ... คำอธิบาย Invoke-WebRequest ดึงเนื้อหาเว

  10. ตรวจสอบว่าสตริงว่างเปล่าหลังลบสับสตริงซ้ำๆ ใน C++

    ปัญหา ได้รับสตริง str1 และ str2 (str2 เป็นสับสตริงของ str1) ลบ str2 ออกจาก str1 ซ้ำๆ จนไม่เหลือ str2 อีก ตรวจสอบว่า str1 จะว่างเปล่าหรือไม่ ตัวอย่าง str1 = CCCPPPPPP, str2 = CPP → True (ลบ CPP สามครั้ง → ว่าง) อัลกอริธึม วนลูปหาและลบ str2 ใน str1 จนกว่าจะหาไม่เจอ หรือ str1 ว่าง โปรแกรมตัวอย่าง #

  11. ตรวจสอบสตริงว่ามีสับสตริงพาลินโดรมยาวคู่ใน C++

    ปัญหา ได้รับสตริงตัวพิมพ์เล็ก ตรวจสอบว่ามีสับสตริงที่เป็นพาลินโดรมและมีความยาวเป็นเลขคู่หรือไม่ ข้อสังเกตสำคัญ พาลินโดรมยาวคู่ที่สั้นที่สุดคือความยาว 2 → ต้องมีตัวอักษรซ้ำกันติดกัน (เช่น aa, bb) ดังนั้น ตรวจสอบเพียงว่า มี s[i] == s[i+1] หรือไม่ โปรแกรมตัวอย่าง #include <bits/stdc++.h> using

  12. ตรวจสอบสตริงรูปแบบ aⁿbⁿ ใน C++

    ปัญหา ได้รับสตริงที่ประกอบด้วย a และ b เท่านั้น ตรวจสอบว่ามีรูปแบบ aⁿbⁿ หรือไม่ (n ตัว a ตามด้วย n ตัว b) ตัวอย่าง aaaaaaaaaaaabbbbbbbbbbbb → True (12 as, 12 bs) อัลกอริธึม นับจำนวน a ติดต่อกันจากต้นสตริง (i) ถ้า 2×i ≠ ความยาวสตริง → False ตรวจสอบส่วนที่เหลือว่าทั้งหมดเป็น b หรือไม่ โปรแกรมตัว

  13. ตรวจสอบการกลับสู่จุดเริ่มต้นหลังเคลื่อนที่ตามทิศทางใน C++

    ปัญหา เริ่มที่ (0,0) ได้รับสตริงทิศทาง E(ตะวันออก), W(ตะวันตก), N(เหนือ), S(ใต้) ตรวจสอบว่ากลับมาที่ (0,0) ได้หรือไม่ ตัวอย่าง EENWWS → True (E+E=N+W+W+S = กลับมาจุดเดิม) อัลกอริธึม นับ Net Displacement: x = count(E) - count(W), y = count(N) - count(S) ถ้าทั้งคู่เป็น 0 → กลับมาจุดเริ่มต้น โปรแกร

  14. ตรวจสอบการเคลื่อนที่จากพิกัดหนึ่งไปอีกพิกัดใน C++

    ปัญหา ได้รับพิกัดเริ่มต้น (sx, sy) และเป้าหมาย (tx, ty) การเคลื่อนที่ที่อนุญาต: (x, y) → (x, x+y) หรือ (x+y, y) ตรวจสอบว่าสามารถไปถึงเป้าหมายได้หรือไม่ ตัวอย่าง (1,1) → (4,5): True (1,1)→(2,1)→(3,1)→(4,1)→(4,5) อัลกอริธึม (ย้อนกลับจากเป้าหมาย) ใช้ Modulo เพื่อลดค่าทีละขั้น: ty) tx %= ty; els

  15. โหมดการทำงานสองโหมด (Dual Mode) ในระบบปฏิบัติการ

    สองโหมดการทำงาน User Mode: โหมดที่แอปพลิเคชันและโปรแกรมผู้ใช้ทำงาน (เล่นเพลง, เบราว์เซอร์, ไม่เข้าถึงฮาร์ดแวร์โดยตรง) Kernel Mode: โหมดที่ฮาร์ดแวร์และคำสั่งพิเศษทำงาน (I/O, สลับโหมด, จัดการ Interrupt) Dual Mode Operation การสลับระหว่าง User Mode และ Kernel Mode เพื่อ: ป้องกันไม่ให้โปรแกรมผู้ใช้

  16. เลข Dudeney (Dudeney Numbers) ใน C++

    Dudeney Number คืออะไร? จำนวนธรรมชาติที่ รากที่สามเท่ากับผลรวมของหลักของมัน สูตร: n = (digit sum of n)³ ตัวอย่าง 512 = 8³, digit sum = 5+1+2 = 8 → 512 เป็น Dudeney Number 1, 512, 4913, 5832, 17576, 19683 เป็น Dudeney Numbers แรกๆ อัลกอริธึมตรวจสอบ ตรวจสอบว่า n เป็นกำลังสามสมบูรณ์หรือไม่ ถ้าใช่ ค

  17. Dumpster Diving / Trashing ในความปลอดภัยไซเบอร์

    Dumpster Diving คืออะไร? เทคนิคใน Cyber Security ที่แฮกเกอร์ใช้สกัดข้อมูลจาก ขยะ โดยหลักการคือ ขยะของคนหนึ่ง อาจเป็นสมบัติของอีกคน ข้อมูลที่แฮกเกอร์หาได้ ข้อมูลทั่วไป: อีเมล, ติดต่อ รหัสผ่าน, โค้ดล็อกอิน, รายละเอียดบัญชี ที่เขียนไว้ในบันทึก/สติกเกอร์ ข้อมูลส่วนตัว: ธนาคาร, สุขภาพ, เอกสารราชการ ข้

  18. เทคนิคจำสูตร Strassen's Matrix Multiplication ใน C++

    Strassens Algorithm อัลกอริธึมคูณเมทริกซ์แบบ Divide and Conquer ลดการคูณจาก 8 ครั้งเหลือ 7 ครั้ง สูตร M1-M7 M1 = a × (f - h) M2 = (a + b) × h M3 = (c + d) × e M4 = d × (g - e) M5 = (a + d) × (e + h) // Diagonal M6 = (b - d) × (g + h) // Last Column × Last Row M7 = (a - c) × (e + f)

  19. โปรแกรมแก้ไขข้อความ (Editors) และประเภทต่างๆ ใน System Programming

    Editors คืออะไร? โปรแกรมสำหรับแก้ไขไฟล์บนคอมพิวเตอร์ ให้สภาพแวดล้อมสร้าง แก้ไข จัดรูปแบบเอกสาร ในการเขียนโปรแกรม Editor คือเครื่องมือแก้ไขโค้ด ประเภทตามลักษณะการแก้ไข Graphical Editor: แก้ไขไฟล์ภาพ/กราฟิก (ทำงานระดับพิกเซล) Text Editor: แก้ไขไฟล์ข้อความ ตัวอักษร และรูปแบบ ประเภทตามวิธีการเข้าถึ

  20. หาสมาชิกที่เท่ากับผลรวมของสมาชิกอื่นทั้งหมดใน C++

    ปัญหา หาสมาชิกในอาร์เรย์ที่มีค่าเท่ากับผลรวมของสมาชิกอื่นๆ ทั้งหมด ตัวอย่าง arr[] = {5, 4, 17, 1, 7} Output: 17 (เพราะ 5+4+1+7 = 17) แนวทางแก้ปัญหา สังเกตว่า: ถ้ามีสมาชิก x ที่เท่ากับผลรวมของอีกทั้งหมด → ผลรวมทั้งหมด = 2x หาผลรวมทั้งหมดของอาร์เรย์ วนหา arr[i] ที่ 2×arr[i] == totalSum โปรแกรมตั

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