Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. พิมพ์ตัวอักษรที่มีความถี่คี่ตามลำดับที่ปรากฏใน C++

    โจทย์ ให้สตริง ต้องการพิมพ์เฉพาะตัวอักษรที่มีความถี่เป็นจำนวนคี่ (Odd) ตามลำดับที่ปรากฏ ตัวอย่าง: adatesaas → d, t, e (ความถี่: a=4, d=1, t=1, e=1, s=2) อัลกอริทึม Step 1: นับความถี่ตัวอักษรในอาร์เรย์ขนาด 26 Step 2: ลูปผ่านสตริง ถ้าความถี่ของตัวอักษรคี่ → พิมพ์ ตัวอย่างโค้ด C++ #include <bits/s

  2. พิมพ์ตัวอักษรและความถี่ตามลำดับที่ปรากฏใน C++

    โจทย์ ให้สตริงตัวพิมพ์เล็ก ต้องการพิมพ์ตัวอักษรแต่ละตัวและความถี่ ตามลำดับที่ปรากฏในสตริง ตัวอย่าง: jskdk → j 1, s 1, k 2, d 1 อัลกอริทึม 0 พิมพ์ตัวอักษรและความถี่ แล้วเซ็ตความถี่เป็น 0 (กันพิมพ์ซ้ำ) ตัวอย่างโค้ด C++ #include <bits/stdc++.h> using namespace std; int main() { string str

  3. พิมพ์ปฏิทินประจำปีใน C++

    โจทย์ ให้ปี ค.ศ. ต้องการพิมพ์ปฏิทินทั้งปี แสดงวัน เดือน ปี ทุกวัน ข้อมูลที่ต้องคำนวณ จำนวนวันในเดือน: 1,3,5,7,8,10,12 = 31 วัน; 4,6,9,11 = 30 วัน; 2 = 28 วัน (29 วันถ้าปีอธิกสุรทิน) วันเริ่มต้นของเดือน: คำนวณจากปีและเดือน (Zellers congruence) ตัวอย่างโค้ด C++ #include <iostream> using name

  4. พิมพ์หมายเลขวงเล็บ (Bracket Number) ใน C++

    โจทย์ ให้นิพจน์ที่มีวงเล็บ ต้องการพิมพ์หมายเลขลำดับของวงเล็บ ตัวอย่าง: ((()())()) → 1 2 3 3 4 4 2 5 5 1 วิธีแก้ปัญหา (Stack) ตัวนับ leftBracket เริ่มที่ 1 Stack เก็บหมายเลขวงเล็บซ้าย เจอ ( → พิมพ์ leftBracket, push เข้า stack, leftBracket++ เจอ ) → พิมพ์ top ของ stack, pop ตัวอย่างโค้ด C++ #incl

  5. พิมพ์คีย์ BST ในช่วงที่กำหนด [k1, k2] ใน C++

    โจทย์ ให้ Binary Search Tree (BST) และช่วง k1 ถึง k2 ต้องการพิมพ์คีย์ทั้งหมดที่อยู่ในช่วง [k1, k2] เรียงจากน้อยไปมาก คุณสมบัติ BST Left subtree มีค่าน้อยกว่า Root Right subtree มีค่ามากกว่า Root ทุก Subtree ก็เป็น BST วิธีแก้ปัญหา ใช้ Inorder Traversal แบบ Recursive พร้อมเงื่อนไขตัดกิ่ง: ถ้า ro

  6. พิมพ์ชุดย่อย Bitwise AND ของจำนวน N ใน C++

    โจทย์ ให้จำนวน N ต้องการพิมพ์ตัวเลขจาก 0 ถึง N ที่เป็นผลลัพธ์ของ Bitwise AND กับ N (คือ i & N = i) ตัวอย่าง: N=4 → 0, 4 (เพราะ 0&4=0, 1&4=0, 2&4=0, 3&4=0, 4&4=4) N=6 → 0, 2, 4, 6 วิธีแก้ปัญหา ใช้คุณสมบัติ: ชุดย่อยของ N ในระดับบิต คือตัวเลข i ที่ i & N == i สามารถสร้างได้โดยลูปย้อนกลับ: i =

  7. พิมพ์ระดับของ Binary Tree เรียงจากน้อยไปมากใน C++

    โจทย์ ให้ Binary Tree ต้องการพิมพ์โหนดในแต่ละระดับ (Level) เรียงจากน้อยไปมาก วิธีแก้ปัญหา ใช้ BFS (Queue) ร่วมกับ Priority Queue (Min-Heap) 2 ตัว: Queue สำหรับ BFS ทั่วไป current_level: Min-heap เก็บค่าระดับปัจจุบัน next_level: Min-heap เก็บค่าระดับถัดไป ใช้ NULL เป็นตัวแบ่งระดับ ตัวอย่างโค้ด C

  8. หาตัวเลขร่วมในทุกแถวของเมทริกซ์ที่เรียงแล้วใน C++

    โจทย์ ให้เมทริกซ์ที่แต่ละแถวเรียงจากน้อยไปมาก ต้องการหาตัวเลขที่ปรากฏในทุกแถว ตัวอย่าง: เมทริกซ์ 4x5 ตัวเลขร่วมคือ 5 วิธีแก้ปัญหา (Hash) สร้าง unordered_map นับความถี่ของแต่ละตัวเลขในแต่ละแถว (นับแค่ครั้งแรกในแต่ละแถว) ลูปหาตัวเลขที่มีความถี่เท่ากับจำนวนแถว (M) วิธีนี้ใช้ได้แม้แถวจะไม่เรียงลำดับ

  9. พิมพ์ Binary Tree แบบ 2 มิติใน C++

    โจทย์ พิมพ์ Binary Tree บนหน้าจอแบบ 2 มิติ (หมุนต้นไม้ 90 องศา ให้รากอยู่ซ้ายสุด ใบขวาสุดอยู่บนสุด) แนวคิด Root อยู่บรรทัดที่ n (ระดับความลึก) ระดับใหม่ของต้นไม้อยู่บรรทัด n+i และ n-i ห่างจากต้นทาง i tab spaces ใบขวาสุดพิมพ์บรรทัดแรก ใบซ้ายสุดพิมพ์บรรทัดสุดท้าย ตัวอย่างโค้ด C++ right = new Node(

  10. เรียงอาร์เรย์สตริงโดยไม่คัดลอกสตริงใน C++

    โจทย์ เรียงอาร์เรย์สตริงตามลำดับเลขอักษร (Lexicographical) โดยห้ามคัดลอกสตริงระหว่างการเรียง (เพื่อประหยัดหน่วยความจำและเวลา) ตัวอย่าง: {Delhi, Hyderabad, Indore, Mumbai, Banglore} → {Banglore, Delhi, Hyderabad, Indore, Mumbai} วิธีแก้ปัญหา ใช้ Index Array: สร้างอาร์เรย์เก็บดัชนี เรียงดัชนีแทนการเร

  11. หาสตริงพาลินโดรม B ที่มี A เป็น subsequence ใน C++

    โจทย์ ให้สตริง A ต้องการหาสตริง B ที่เป็นพาลินโดรม (อ่านจากหน้าหลังเท่ากัน) และ A เป็น subsequence ของ B (ได้จากการลบตัวอักษรบางตัวจาก B โดยไม่เปลี่ยนลำดับ) ตัวอย่าง: A = ab → B = abba (พาลินโดรม และมี ab เป็น subsequence) วิธีแก้ปัญหา วิธีง่ายที่สุด: B = A + reverse(A) → ได้พาลินโดรมที่มี A เป็น s

  12. พิมพ์สมาชิกอาร์เรย์ที่หารด้วยอีกตัวหนึ่งในอาร์เรย์ลงตัวใน C++

    โจทย์ ให้อาร์เรย์จำนวนเต็ม ต้องการพิมพ์เฉพาะตัวเลขที่หารด้วยอีกตัวหนึ่งในอาร์เรย์ลงตัว (อย่างน้อย 1 ตัว) ตัวอย่าง: Input: 3 12 16 21 → Output: 12 21 (เพราะ 12 หาร 3 ลงตัว, 21 หาร 3 ลงตัว, 16 หาร 3 ไม่ลงตัว) วิธีแก้ปัญหา (Hash) เก็บสมาชิกทั้งหมดใน unordered_set หาค่าสูงสุดในอาร์เรย์ สำหรับแต่ละตัวเ

  13. หาคู่ดัชนีในเมทริกซ์ให้ผลต่างสูงสุด (c>a, d>b) ใน C++

    โจทย์ ให้เมทริกซ์ n x n ต้องการหาค่าสูงสุดของ mat[c][d] - mat[a][b] โดยที่ c > a และ d > b ตัวอย่าง: เมทริกซ์ 5x5 ผลลัพธ์คือ 18 (จาก mat[4][2] - mat[1][0] = 10 - (-8) = 18) วิธีแก้ปัญหา (Preprocessing) สร้างเมทริกซ์ arr_max ที่ arr_max[i][j] เก็บค่าสูงสุดในบริเวณ (i,j) ถึง (n-1,n-1) โดย: เติ

  14. พิมพ์อาร์เรย์สลับกันเพิ่มและลดใน C++

    โจทย์ ให้อาร์เรย์ตัวเลข ต้องการพิมพ์ค่าออกมาเป็นลำดับสลับกันระหว่างเพิ่มและลด โดย: 2 ตัวแรก เรียงเพิ่ม 3 ตัวถัดไป เรียงลด 4 ตัวถัดไป เรียงเพิ่ม เพิ่มขึ้นทีละ 1 ทุกช่วง ตัวอย่าง: Input: {1, 4, 0, 2, 7, 9, 3} → Output: 0 1 9 7 4 2 3 คำอธิบาย: เรียงเพิ่มได้ 0 1 2 3 4 7 9 → 2 ตัวแรก (0,1) → 3 ตัวท้าย

  15. หาสามตัวเลขที่ผลรวมของสองตัวเท่าตัวที่สามใน C++

    โจทย์ ให้อาร์เรย์ของตัวเลข n ตัว ต้องการหา 3 ตัวเลข ที่ผลรวมของ 2 ตัวเท่ากับตัวที่ 3 ตัวอย่าง: [5, 32, 1, 7, 10, 50, 19, 21, 2] → ผลลัพธ์: 21, 2, 19 (เพราะ 2 + 19 = 21) วิธีแก้ปัญหา (Two Pointers) เรียงอาร์เรย์จากน้อยไปมาก ลูป i จากท้ายสุด (ค่ามากที่สุด) กลับมาหาหัว สำหรับแต่ละ i ใช้ two pointers:

  16. พิมพ์บรรพบุรุษของโหนดใน Binary Tree แบบ Recursive ใน C++

    โจทย์ ให้ Binary Tree และโหนดเป้าหมาย ต้องการพิมพ์บรรพบุรุษของโหนดนั้นแบบ Recursive วิธีแก้ปัญหา ใช้การท่องแบบ Recursive จาก Root ไปยังโหนดเป้าหมาย: ถ้า Root เป็น NULL → คืนค่า false ถ้า Root คือโหนดเป้าหมาย → คืนค่า true เรียก Recursive ซ้ายและขวา ถ้าหนึ่งในสองคืน true → พิมพ์ค่า Root และคืน true

  17. หาตัวอักษรในเมทริกซ์ที่มีดาว (*) รอบตัวมากที่สุดใน C++

    โจทย์ ให้เมทริกซ์ที่เต็มไปด้วยดาว (*) และตัวอักษร ต้องการหาตัวอักษรที่มีดาวรอบตัวมากที่สุด (นับ 8 ทิศทาง) ถ้ามีค่าเท่ากัน ให้เลือกตัวอักษรที่เล็กกว่าตามลำดับเลขอักษร (Lexicographically smaller) ตัวอย่าง ในเมทริกซ์ 4x4 ตัวอักษร A และ C มีดาวรอบตัว 7 ดวง (มากที่สุด) A น้อยกว่า C ตามลำดับอักษร → ผลลัพ

  18. พิมพ์บรรพบุรุษของโหนดใน Binary Tree แบบไม่ใช้ Recursion ใน C++

    โจทย์ ให้ Binary Tree และโหนดเป้าหมาย ต้องการพิมพ์บรรพบุรุษ (Ancestors) ของโหนดนั้นแบบไม่ใช้ Recursion Binary Tree คือต้นไม้ที่แต่ละโหนดมีลูกได้สูงสุด 2 โหนด บรรพบุรุษ คือโหนดที่อยู่ระดับสูงกว่าโหนดเป้าหมาย วิธีแก้ปัญหา ใช้การท่อง Postorder แบบ Iterative พร้อม Stack เก็บบรรพบุรุษ ขั้นตอน: สร้าง St

  19. หาแถวซ้ำในเมทริกซ์ไบนารีด้วย Trie ใน C++

    โจทย์ ให้เมทริกซ์ไบนารี (มีค่า 0 และ 1) ต้องการหาแถวที่ซ้ำกัน ตัวอย่างเมทริกซ์ 6x6 มีแถวซ้ำที่ตำแหน่ง 3, 4, 5 (นับจาก 0) วิธีแก้ปัญหา ใช้โครงสร้างข้อมูล Trie (Prefix Tree) ซึ่งเหมาะสำหรับเก็บและค้นหาข้อมูลที่ชุดตัวอักษรน้อย (0, 1) ความซับซ้อนในการค้นหาเทียบเท่าความยาวของคีย์ ขั้นตอน: สร้าง Trie สำ

  20. พิมพ์เมทริกซ์ N x M ที่แถวและคอลัมน์มีสระทั้งหมดใน C++

    โจทย์ สร้างเมทริกซ์ 2 มิติขนาด n x m โดยวางเฉพาะสระ (a, e, i, o, u) ให้แถวและคอลัมน์ทุกแถวมีสระครบทุกตัว ขนาดเมทริกซ์ขั้นต่ำคือ 5x5 ตัวอย่าง ตัวอย่าง 1: N=5, M=5 a e i o u e i o u a i o u a e o u a e i u a e i o คำอธิบาย: จัดเรียงสระ aeiou ในแต่ละแถวและคอลัมน์ แถวแรกคือ aeiou แถวถัดไปเลื่อนซ้าย 1 ต

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:115/301  20-คอมพิวเตอร์/Page Goto:1 109 110 111 112 113 114 115 116 117 118 119 120 121