Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. Validate IPv4 Address ด้วย Regex ใน C++

    โจทย์ ตรวจสอบว่า String เป็น IPv4 Address ที่ถูกต้องหรือไม่ ใช้ Regular Expression กฎ IPv4 4 กลุ่ม (Octets) คั่นด้วย Dot (.) แต่ละกลุ่ม: 0-255 ห้าม Leading Zeros (ยกเว้น 0 ตัวเดียว) ตัวอย่างถูกต้อง: 192.168.1.1, 10.0.0.1, 255.255.255.255 ตัวอย่างผิด: 256.1.1.1, 192.168.01.1, 1.2.3 Regex Pattern

  2. Validate IPv6 Address ด้วย Regex ใน C++

    โจทย์ ตรวจสอบว่า String เป็น IPv6 Address ที่ถูกต้องหรือไม่ ใช้ Regular Expression (Regex) รูปแบบ IPv6 8 กลุ่ม (Groups) คั่นด้วย Colon (:) แต่ละกลุ่ม: 1-4 Hexadecimal Digits (0-9, a-f, A-F) Leading zeros อนุญาต (แตกต่างจาก IPv4) ตัวอย่าง: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 Regex Pattern ^(

  3. Delannoy Numbers คืออะไร? หาเลข Delannoy ใน C++

    Delannoy Numbers คืออะไร? Delannoy Number D(m,n) = จำนวนเส้นทางจาก (0,0) ไป (m,n) บน Grid โดยเดินได้ 3 ทิศทาง: → East (Right): (x+1, y) ↑ North (Up): (x, y+1) ↗ Northeast (Diagonal): (x+1, y+1) Recurrence Relation D(m,n) = D(m-1,n) + D(m,n-1) + D(m-1,n-1) Base: D(0,0) = 1 D(m,0) = 1, D(0,n) = 1

  4. Tim Sort Algorithm ใน C++

    Tim Sort คืออะไร? Timsort เป็น Hybrid Stable Sorting Algorithm ผสมระหว่าง Insertion Sort (สำหรับ Run ขนาดเล็ก) และ Merge Sort (สำหรับ Merge Runs) ใช้ใน Python, Java (Arrays.sort), Android, GNU Octave, V8 Engine หลักการทำงาน แบ่ง Array เป็น Runs ขนาดคงที่ (ปกติ 32-64 elements) Sort แต่ละ Run ด้วย I

  5. Binary Tree Tilt (ความเอียงของต้นไม้) ใน C++

    โจทย์ กำหนด Binary Tree หา Tilt ของทั้งต้นไม้ = ผลรวม Tilt ของทุกโหนด Tilt ของโหนด = |Sum(Left Subtree) - Sum(Right Subtree)| (Leaf Node Tilt = 0) ตัวอย่าง 4 / \ 2 9 / \ \ 3 5 7 Tilt(3) = |0-0| = 0 Tilt(5) = |0-0| = 0 Tilt(7) = |0-0| = 0 Tilt(2) = |3-5| = 2 Tilt(9

  6. Breadth First Search บน Matrix (Grid) ใน C++

    โจทย์ กำหนด 2D Grid/ Matrix หา Shortest Path จาก Source (2) ไป Destination (3) โดยเดินได้เฉพาะ Cell = 1 (หรือ 3) ไม่เดินได้ Cell = 0 ใช้ BFS หาระยะทางสั้นที่สุด Cell Values 0: Blocked/Wall 1: Free Path 2: Source 3: Destination แนวคิด: BFS บน Grid Queue เก็บ (row, col) Distance Array เก็บระยะทาง

  7. ตรวจสอบ Isomorphic Tree ใน C++

    โจทย์ กำหนด Binary Tree 2 ต้น ตรวจสอบว่า Isomorphic หรือไม่ (Tree หนึ่งได้มาจากอีกต้นด้วยการ Swap Left/Right Children ที่โหนดใดโหนดหนึ่งได้) ตัวอย่าง Tree 1: 1 Tree 2: 1 / \ / \ 2 3 3 2 / \ \ /

  8. ตรวจสอบ Array Sorted และ Rotated ใน C++

    โจทย์ กำหนด Array ตรวจสอบว่าเป็น Sorted (Non-decreasing) และ Rotated หรือไม่ กล่าวคือ มี Pivot จุดเดียวที่ Array วนกลับ (เช่น [3,4,5,1,2] = Sorted [1,2,3,4,5] Rotated ที่ Index 3) ตัวอย่าง [7, 8, 9, 4, 5, 6] → True (Sorted [4,5,6,7,8,9] Rotated) [1, 5, 7, 6, 2, 3] → False (Not sorted) [1, 2, 3, 4,

  9. ตรวจสอบ Full Binary Tree ใน C++

    โจทย์ กำหนด Binary Tree ตรวจสอบว่าเป็น Full Binary Tree หรือไม่ (ทุกโหนดมีลูก 0 หรือ 2 ตัวเท่านั้น - ไม่มีโหนดที่มีลูก 1 ตัว) ตัวอย่าง Full: Root มี 2 ลูก, ทุก Internal Node มี 2 ลูก, Leaf มี 0 ลูก Not Full: มีโหนดที่มีลูกเพียง 1 ตัว (Left only หรือ Right only) แนวคิด: Recursive Check Base: NULL

  10. หาตัวเลขน้อยที่สุดในตัวเลข C++

    โจทย์ กำหนดจำนวนเต็มบวก หา Digit (หลัก) ที่มีค่าน้อยที่สุด ตัวอย่าง N = 154870 → Digits: 1,5,4,8,7,0 → Min = 0 แนวคิด: Modulo 10 Loop ใช้ n % 10 ดึงหลักสุดท้าย แล้ว n /= 10 ตัดหลักสุดท้าย ทำซ้ำจน n == 0 โค้ด C++ #include <iostream> using namespace std; int smallestDigit(int n) { if (n

  11. Circle Sort Algorithm ใน C++

    Circle Sort คืออะไร? Circle Sort เป็น O(n log n) Sorting Algorithm ที่เปรียบเทียบ Element คู่ข้าม (Diametrically opposite) แบบ Recursive คล้าย Merge Sort แต่เปรียบเทียบ ข้ามศูนย์กลาง หลักการทำงาน เปรียบเทียบ Element แรกกับตัวสุดท้าย, ตัวที่ 2 กับตัวลำดับก่อนสุด, ... ขวา → Swap แบ่ง Array เป็น 2 ค

  12. Copy Linked List with Random Pointer (Deep Copy) ใน C++

    โจทย์ กำหนด Linked List ที่แต่ละโหนดมี next และ random pointer (ชี้ไปโหนดอื่นสุ่ม) สร้าง Deep Copy (โหนดใหม่ทุกตัว, random ชี้ไปโหนดใหม่ที่ตรงกัน) ตัวอย่าง Original: 5 → 6 → 3 → 4 → 2 Random: ↓ ↓ ↓ ↓ ↓ 3 5 2 2 6 Deep Copy: 5→ 6→ 3→ 4→ 2 Random: ↓ ↓ ↓ ↓ ↓

  13. Daily Temperatures (อุณหภูมิรายวัน) ใน C++

    โจทย์ กำหนด Array temperatures คืน Array answer ที่ answer[i] = จำนวนวันต้องรอจนกว่าจะเจออุณหภูมิสูงกว่า temperatures[i] ถ้าไม่มีให้ 0 ตัวอย่าง T = [73, 74, 75, 71, 69, 72, 76, 73] 69 → 1 day Day 5 (72): รอ 1 วัน จน Day 6 (76) → 1 day Day 6 (76): ไม่มีวันร้อนกว่า → 0 Day 7 (73): ไม่มีวันร้อนกว่า →

  14. นับจำนวน 1 Bits ใน Binary Number 32-bit C++

    โจทย์ กำหนด Unsigned 32-bit Integer นับจำนวน Bit ที่เป็น 1 (Population Count / Hamming Weight) ตัวอย่าง N = 00000000000000100111 (Binary) = 39 (Decimal) Bits ที่เป็น 1: 4 ตัว → Output: 4 วิธีการแก้ 1. Built-in Function (เร็วที่สุด) #include <bits/stdc++.h> using namespace std; int countBi

  15. หา Shortest Distance ถึง Character ใน String C++

    โจทย์ กำหนด String s และ Character c หา Array dist ที่ dist[i] = ระยะทางสั้นที่สุดจาก s[i] ไปยัง c ใกล้ที่สุด ตัวอย่าง s = tutorialspoint, c = o Index ของ o: 3, 10 Index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Char: t u t o r i a l s p o i n t Dist: 3 2 1 0 1 2 3 3 2

  16. หาผลรวม Left Leaf Nodes ของ Binary Tree ใน C++

    โจทย์ กำหนด Binary Tree หาผลรวมของ Leaf Nodes ที่เป็น Left Child ของ Parent (Left Leaves) ตัวอย่าง 4 / \ 2 2 / \ / \ 5 7 5 7 Left Leaves: 5 (left of 2), 5 (left of 2) → Sum = 10 แนวคิด: Recursive DFS Traverse Tree ตรวจสอบแต่ละโหนด: ถ้า left มีอยู่ และ left เป็น Leaf (

  17. Intersection ของ Linked List 2 ตัวใน C++

    โจทย์ หาจุดตัด (Intersection Node) ของ Singly Linked List 2 ตัว จุดตัด = โหนดเดียวกัน (Address เดียวกัน ไม่ใช่แค่ค่าเท่ากัน) ถ้าไม่ตัดกัน Return NULL ตัวอย่าง List A: 5 → 7 → 3 ↘ 9 → 2 → NULL ↗ List B: 4 → 6 Intersection: Node 9 (Value 9) แนวคิด

  18. Largest Merge ของสตริง 2 ตัวใน C++

    โจทย์ กำหนด 2 สตริง a, b สร้างสตริง merge โดยทุกขั้นตอนเลือกตัวแรกของ a หรือ b ที่ Lexicographically larger (มากกว่าตามพจนานุกรม) ต่อท้าย merge จนกว่าทั้งคู่ว่าง ตัวอย่าง a = bacaa, b = abcaa เปรียบเทียบ bacaa vs abcaa a เลือก b จาก a เหลือ a=acaa, b=abcaa abcaa เลือก a จาก a ... ผลลัพธ์: bacabcaaa

  19. ทำให้เลข 3 ตัวเป็นศูนย์ใน C++

    โจทย์ กำหนด 3 จำนวนเต็มบวก a, b, c ตัวที่เหลือ ลบ 1 จากทั้งคู่ หาจำนวนขั้นตอนน้อยที่สุดทำให้ทั้ง 3 ตัวเป็น 0 ตัวอย่าง a=4, b=4, c=6 (4,4,6) → ลบ a,b: (3,3,6) → ลบ a,c: (2,3,5) → ลบ a,c: (1,3,4) → ลบ a,c: (0,3,3) → ลบ b,c: (0,2,2) → ลบ b,c: (0,1,1) → ลบ b,c

  20. Powerful Integers ใน C++

    โจทย์ กำหนด 3 จำนวนเต็ม a, b, limit หาจำนวนเต็มทุกตัวในช่วง [1, limit] ที่เขียนในรูป a^i + b^j ได้ โดย i ≥ 0, j ≥ 0 ตัวอย่าง a=2, b=5, limit=10 i=0,j=0: 2^0+5^0 = 1+1 = 2 i=1,j=0: 2^1+5^0 = 2+1 = 3 i=0,j=1: 2^0+5^1 = 1+5 = 6 i=1,j=1: 2^1+5^1 = 2+5 = 7 i=2,j=0: 2^2+5^0 = 4+1 = 5 i=3,j=0: 2^3+5^0 =

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:256/301  20-คอมพิวเตอร์/Page Goto:1 250 251 252 253 254 255 256 257 258 259 260 261 262