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

    ภาพรวมปัญหา แก้ปริศนา Sudoku 9×9 ที่กรอกบางส่วน กฎ: แต่ละแถว, คอลัมน์, และกล่อง 3×3 ต้องมีตัวเลข 1-9 ครั้งละ 1 ครั้ง แนวทางแก้ปัญหา (Backtracking) หาช่องว่าง (ค่า 0) ลองใส่ตัวเลข 1-9 ตรวจสอบความถูกต้อง: ไม่ซ้ำในแถว, คอลัมน์, กล่อง 3×3 ถ้าถูกต้อง ใส่ตัวเลข และ recursion แก้ต่อ ถ้าแก้เสร็จ

  2. โปรแกรมหาผลรวมของใบขวาในต้นไม้ไบนารีใน C++

    ภาพรวมปัญหา ให้ต้นไม้ไบนารี ต้องการหาผลรวมของค่าใบ (leaf nodes) ที่เป็นลูกขวา (right child) ของ parent ตัวอย่าง ต้นไม้: 3 / \ 9 10 / \ 15 7 ใบขวา: 7 (ลูกขวาของ 9), 10 (ลูกขวาของ 3) → ผลรวม = 17 แนวทางแก้ปัญหา (DFS) ฟังก์ชัน dfs(node, isRightChild) ถ้า node เป็นใบ (lef

  3. โปรแกรมหาผลรวมของโหนดลึกที่สุดในต้นไม้ไบนารีใน C++

    ภาพรวมปัญหา ให้ต้นไม้ไบนารี ต้องการหาผลรวมของค่าโหนดที่อยู่ลึกที่สุด (deepest leaves) ตัวอย่าง ต้นไม้: 1 / \ 2 3 / \ \ 4 5 6 / \ 7 4 โหนดลึกที่สุด (depth 3): 7 และ 4 → ผลรวม = 11 แนวทางแก้ปัญหา (DFS + Map) ใช้ map เก็บผลรวมค่าโหนดแต่ละ dep

  4. โปรแกรมหาชื่อคอลัมน์สเปรดชีตจากหมายเลขคอลัมน์ใน C++

    ภาพรวมปัญหา ให้หมายเลขคอลัมน์ (จำนวนเต็มบวก) ต้องการหาชื่อคอลัมน์สเปรดชีตที่สอดคล้อง เช่น 1→A, 26→Z, 27→AA, 28→AB ตัวอย่าง Input: 30 Output: AD หลักการแปลง (เหมือน xID 1004079061) ระบบ Bijective Base-26: ไม่มีเลข 0, ใช้ A=1 ถึง Z=26 อัลกอริทึมมาตรฐาน: n-- (ปรับเป็น 0-based) res += A + (n % 26

  5. โปรแกรมหาหมายเลขคอลัมน์สเปรดชีตจากชื่อคอลัมน์ใน C++

    ภาพรวมปัญหา ให้ชื่อคอลัมน์สเปรดชีต (เช่น A, B, ..., Z, AA, AB, ..., ZZ, AAA...) ต้องการหาหมายเลขคอลัมน์ที่สอดคล้อง นี่คือระบบเลขฐาน 26 (Bijective Base-26) โดย A=1, B=2, ..., Z=26, AA=27, AB=28... ตัวอย่าง Input: 700 Output: ZX คำอธิบาย: คอลัมน์ที่ 700 คือ ZX หลักการแปลง (Base-26 ไม่มีศูนย์) ต่างจา

  6. โปรแกรมตัดกิ่งต้นไม้ไบนารี (Prune Binary Tree) ใน C++

    ภาพรวมปัญหา ให้ต้นไม้ไบนารีที่โหนดมีค่า 0 หรือ 1 ต้องการตัดกิ่งย่อย (subtree) ที่ไม่มีค่า 1 ออกทั้งหมด ตัวอย่าง ต้นไม้ต้นฉบับ → หลังตัดกิ่งที่ไม่มี 1 แนวทางแก้ปัญหา (Post-order DFS) ฟังก์ชัน recursive pruneTree(TreeNode* node) ถ้า node เป็น null คืนค่า null เรียก recursion บน left และ righ

  7. โปรแกรมนับ triplet ที่เป็นสามเหลี่ยมได้ใน C++

    ภาพรวมปัญหา a) ตัวอย่าง Input: [2,2,3,4] Output: 3 คำอธิบาย: [2,3,4] (ใช้ 2 ตัวแรก), [2,3,4] (ใช้ 2 ตัวที่สอง), [2,2,3] แนวทางแก้ปัญหา (Two Pointers หลังเรียงลำดับ) เรียงอาร์เรย์จากน้อยไปมาก กำหนด c เป็นด้านยาวสุด (วนจากท้ายไปหน้า) ใช้ two pointers: left=0, right=c-1 nums[c] → ทุกคู่ระห

  8. นับ triplet ในอาร์เรย์ที่ผลคูณเท่ากับ M ใน C++

    ภาพรวมปัญหา ให้อาร์เรย์ Arr[] ขนาด n และจำนวน M ต้องการนับ triplet (x,y,z) ที่ตำแหน่งต่างกัน และ arr[x]×arr[y]×arr[z] = M ตัวอย่าง Input: arr[] = {1,2,3,0,2,4}, M = 24 Output: 2 คำอธิบาย: (2,3,4) และ (3,2,4) — ตำแหน่งต่างกัน นับเป็นคนละ triplet Input: arr[] = {2,2,2,2,2}, M = 6 Output: 0 แนวทางแก

  9. นับจำนวนในช่วงที่ตัวประกอบเฉพาะมีแค่ 2 และ 3 ใน C++

    ภาพรวมปัญหา ให้ช่วง [START, END] ต้องการนับจำนวนที่ตัวประกอบเฉพาะมีเฉพาะ 2 และ 3 (รูปแบบ 2ᵃ × 3ᵇ) ตัวอย่าง Input: START=20, END=25 Output: 1 คำอธิบาย: 24 = 2³ × 3¹ Input: START=1000, END=1500 Output: 4 คำอธิบาย: 1024 (2¹⁰), 1152 (2⁷×3²), 1296 (2⁴×3⁴), 1458 (2¹×3⁶) แนวทางแก้ปัญหา (Brute Force)

  10. นับจำนวนที่มีเลข 0 อยู่ในตัวเลขในช่วง [1,N] ใน C++

    ภาพรวมปัญหา ให้จำนวน N ต้องการนับจำนวนใน [1, N] ที่มีหลัก 0 อย่างน้อย 1 หลัก ตัวอย่าง Input: N = 11 Output: 1 คำอธิบาย: 10 มีเลข 0 Input: N = 100 Output: 10 คำอธิบาย: 10,20,30,40,50,60,70,80,90,100 แนวทางแก้ปัญหา (Brute Force) วนลูป i = 10 ถึง N (1-9 ไม่มี 0) แยกหลักด้วย while loop ตรวจสอบ d

  11. นับจำนวนในช่วงที่หารทุกสมาชิกในอาร์เรย์ลงตัวใน C++

    ภาพรวมปัญหา ให้ช่วง [START, END] และอาร์เรย์ Arr[] ต้องการนับจำนวนในช่วงที่หารสมาชิกทุกตัวใน Arr[] ลงตัว ตัวอย่าง Input: START=1, END=20, Arr[]={2,4,8} Output: 2 คำอธิบาย: 8, 16 หาร 2,4,8 ลงตัวทุกตัว Input: START=100, END=200, Arr[]={230,321,490,521} Output: 0 แนวทางที่ 1: Naive (ตรวจสอบทุกตัวหาร

  12. นับจำนวนใน [1,N] ที่หาร X ลงตัวแต่ไม่หาร Y ลงตัวใน C++

    ภาพรวมปัญหา ให้จำนวน N, X, Y ต้องการนับจำนวนใน [1, N] ที่หาร X ลงตัว แต่ไม่หาร Y ลงตัว ตัวอย่าง Input: N=20, X=5, Y=20 Output: 2 คำอธิบาย: 5, 15 หาร 5 ลงตัว แต่ไม่หาร 20 ลงตัว Input: N=20, X=4, Y=7 Output: 5 คำอธิบาย: 4, 8, 12, 16, 20 หาร 4 ลงตัว ไม่หาร 7 ลงตัว แนวทางแก้ปัญหา (Naive) วนลูป i =

  13. นับจำนวนในช่วงที่หารหลักไม่ใช่ศูนย์ของตัวเองลงตัวใน C++

    ภาพรวมปัญหา ให้ช่วง [START, END] ต้องการนับจำนวนในช่วงที่หารหลักไม่ใช่ศูนย์ของตัวเองลงตัวทุกหลัก ตัวอย่าง Input: START=10, END=20 Output: 14 (โค้ดต้นฉบับแสดง 14 แต่ตัวอย่างอธิบาย 5 ตัว: 10,11,12,15,20) หมายเหตุ: ผลลัพธ์ตัวอย่างและคำอธิบายไม่สอดคล้องกัน โค้ดนับได้ 14 ตัว Input: START=100, END=200 O

  14. นับจำนวนใน [1,N] ที่ผลต่างกับผลรวมหลักมากกว่า D ใน C++

    ภาพรวมปัญหา D ตัวอย่าง Input: N = 15, D = 5 Output: 6 คำอธิบาย:5) Input: N = 20, D = 10 Output: 1 คำอธิบาย: 10 ข้อสังเกตสำคัญ สำหรับจำนวน x ที่มีหลัก d_k...d_1d_0: x = Σ dᵢ × 10ⁱ ผลรวมหลัก = Σ dᵢ x - sumDigits = Σ dᵢ × (10ⁱ - 1) = Σ dᵢ × (9, 99, 999, ...) ค่านี้จะหาร 9 ลงตัวเสมอ และเพิ่

  15. นับจำนวนที่เป็นตัวคูณร่วมของสองจำนวนในช่วงใน C++

    ภาพรวมปัญหา ให้จำนวน A, B และช่วง [START, END] กระเบื้องที่ A ทาสีขาว B ทาสีดำ ถ้าทาทั้งสองสีจะกลายเป็นสีเทา ต้องการนับกระเบื้องสีเทา (ตัวคูณร่วมของ A และ B) ตัวอย่าง Input: START=10, END=20, A=3, B=6 Output: 2 คำอธิบาย: 12, 18 เป็นตัวคูณของ 3 และ 6 Input: START=1, END=100, A=10, B=11 Output: 0 ข

  16. นับจำนวนในช่วง [START,END] ที่ผลรวมหลักเท่ากับ Y ใน C++

    ภาพรวมปัญหา ให้ช่วง [START, END] และจำนวน Y ต้องการนับจำนวนในช่วงที่ผลรวมหลักเท่ากับ Y ตัวอย่าง Input: START=10, END=20, Y=4 Output: 1 คำอธิบาย: 13 (1+3=4) Input: START=10, END=50, Y=5 Output: 5 คำอธิบาย: 14, 23, 32, 41, 50 แนวทางแก้ปัญหา ฟังก์ชัน digitSum(int start, int end, int y) วนลูป i

  17. นับจำนวนในช่วง [START,END] ที่ไม่มีเลข 0 ผลรวมหลักเท่ากับ N และหาร M ลงตัวใน C++

    ภาพรวมปัญหา ให้ช่วง [START, END] และจำนวน N, M ต้องการนับจำนวนในช่วงที่: ไม่มีหลักศูนย์ (no zero digits) ผลรวมหลักเท่ากับ N หาร M ลงตัว ตัวอย่าง Input: START=1, END=100, N=9, M=6 Output: 4 คำอธิบาย: 18, 36, 54, 72 — ผลรวมหลัก=9, หาร 6 ลงตัว, ไม่มีเลข 0 Input: START=100, END=200, N=10, M=2

  18. นับจำนวนในอาร์เรย์ที่เรียงแล้ว น้อยกว่าหรือเท่ากับ K ใน C++

    ภาพรวมปัญหา ให้อาร์เรย์จำนวนเต็มที่เรียงแล้ว และค่า K ต้องการนับจำนวนสมาชิกที่ ≤ K ตัวอย่าง Input: Arr[] = {1, 2, 3, 14, 50, 69, 90}, K = 12 Output: 3 คำอธิบาย: 1, 2, 3 ≤ 12 Input: Arr[] = {12, 13, 13, 13, 14, 50, 54, 100}, K = 14 Output: 5 คำอธิบาย: 12, 13, 13, 13, 14 ≤ 14 แนวทาง Naive (Linear S

  19. นับคู่มี序ที่ผลรวมเป็น S และ XOR เป็น K ใน C++

    ภาพรวมปัญหา ให้จำนวน S และ K ต้องการนับคู่มี序ของจำนวนเต็มบวก (i, j) ที่ i + j = S และ i ^ j = K ตัวอย่าง Input: S = 10, K = 4 Output: 2 คำอธิบาย: (3,7) และ (7,3) Input: S = 12, K = 6 Output: 0 ข้อสังเกตสำคัญ สำหรับจำนวนเต็มบวก a, b: a + b = (a ^ b) + 2 × (a & b) ดังนั้น S = K + 2 × (a &a

  20. นับคู่มี序ที่ผลคูณน้อยกว่า N ใน C++

    ภาพรวมปัญหา ให้จำนวน N ต้องการนับคู่มี序ของจำนวนเต็มบวก (i, j) ที่ i × j < N ตัวอย่าง Input: N = 4 Output: 5 คำอธิบาย: (1,1), (1,2), (1,3), (2,1), (3,1) Input: N = 100 Output: 473 แนวทางแก้ปัญหา วนลูป i จาก 1 ถึง N-1 สำหรับแต่ละ i, j วนจาก 1 ถึงที่ i×j < N → j < N/i จำนวน j ที่เป็นไปได้ = ⌊

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:221/301  20-คอมพิวเตอร์/Page Goto:1 215 216 217 218 219 220 221 222 223 224 225 226 227