Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. Minimum Sum Submatrix ในอาร์เรย์ 2 มิติ (2D Array) ใน C++

    ได้รับเมทริกซ์ 2 มิติ (2D array) หาผลรวมต่ำสุดของซับเมทริกซ์ (submatrix) ใดๆ ภายในเมทริกซ์ ตัวอย่าง Input: matrix 4×4 = {{2,3,-1,5}, {-2,9,-1,6}, {5,6,9,-9}, {-6,1,1,1}} Output: Minimum sum submatrix in a given 2D array is: -9 คำอธิบาย: ซับเมทริกซ์ที่ให้ผลรวม -9 (อาจเป็นเซลล์เดียว -9 หรือกลุ่มเซลล

  2. เพิ่มผลรวมอาร์เรย์สูงสุดด้วยการคูณ Prefix ด้วย -1 ใน C++

    ได้รับอาร์เรย์จำนวนเต็ม เลือก prefix (ตัวแรก) คูณ -1 สร้าง prefix sum array หาผลรวมสูงสุดของ prefix array นั้น Prefix Array prefix[0] = arr[0] prefix[1] = prefix[0] + arr[1] prefix[2] = prefix[1] + arr[2] ... ตัวอย่าง Input: arr[] = {2, 4, 1, 5, 2} Output: Prefix array: -2 2 3 8 10 → Maximize sum

  3. เพิ่มผลรวมซับอาร์เรย์สูงสุดหลังคูณซับอาร์เรย์ใดๆ ด้วย X ใน C++

    ได้รับอาร์เรย์จำนวนเต็มและตัวแปร X เลือกซับอาร์เรย์หนึ่ง คูณทุกสมาชิกด้วย X หาผลรวมซับอาร์เรย์สูงสุดที่เป็นไปได้ ตัวอย่าง Input: arr[] = {2, 4, 1, -5, -2}, X = 3 Output: 21 คำอธิบาย: เลือกซับอาร์เรย์ {2,4,1} คูณ 3 → {6,12,3,-5,-2} Max subarray sum = 6+12+3 = 21 Input: arr[] = {-1, 2, -6, 3, -4},

  4. อัลกอริทึม Mid-Point Line Generation ใน C++

    เส้นเชื่อม 2 จุด พิกเซลบนหน้าจอ มีพิกัดจำนวนเต็ม กำหนดจุด (x1,y1) และ (x2,y2) โดย x1 < x2, y1 < y2 หาจุดกลางทั้งหมดระหว่าง 2 จุดด้วย Mid-Point Line Generation Algorithm อัลกอริทึม 3 แบบ DDA Algorithm Bresenhams Line Generation Mid-Point Algorithm (นี่คือที่นำเสนอ) Mid-Point Algorithm ขั้นตอน ค

  5. Minimum Word Break Problem ใน C++

    ได้รับอาร์เรย์สตริงคำศัพท์ หาจำนวนการแบ่งคำ (word break) น้อยที่สุด ที่ทำให้สตริงที่ต่อกัน (concatenated) แบ่งเป็นคำในพจนานุสรณีได้ ตัวอย่าง Input: word[] = {Hello, Hell, tell, well, bell, ball, all} Output: Minimum Word Break is: 1 คำอธิบาย: ตัวอย่าง Hell + all = Hellall → แบ่งได้ Hell all (1 bre

  6. ลดผลรวมรากของพหุนามให้น้อยที่สุดใน C++

    ได้รับอาร์เรย์สัมประสิทธิ์พหุนาม ขนาด n (ชั้น = n-1) จัดเรียงสัมประสิทธิ์ใหม่เพื่อให้ผลรวมราก (sum of roots) น้อยที่สุด โดยใช้สูตร Vieta: ผลรวมราก = -a_{n-1} / a_n ตัวอย่าง Input: arr[] = {2, -1, 4, 9, -1, 10, -5} Output: Minimize the sum of roots of a given polynomial is: -1 -5 2 4 9 -1 10 คำอธิบ

  7. Maximum Subarray Sum ในช่วงที่กำหนด (Range) ใน C++

    ได้รับอาร์เรย์จำนวนเต็ม มีค่าบวกและลบ หาผลรวมสูงสุดของซับอาร์เรย์ในช่วง index ที่กำหนด [first, last] โดยใช้ Segment Tree ตัวอย่าง Input: arr[] = {3, 2, -1, 6, 7, 2}, first = 0, last = 5 Output: Maximum Subarray Sum in a given Range is: 19 คำอธิบาย: ครอบคลุมทั้งอาร์เรย์ ซับอาร์เรย์สูงสุด: 3 + 2 + (

  8. ทฤษฎี Midy (Midy's Theorem) ใน C++

    ได้รับตัวเศษ a_num และตัวส่วน p_den (ต้องเป็นจำนวนเฉพาะ) ตรวจสอบว่าการหาร a_num / p_den สร้างทศนิยมซ้ำที่พิสูจน์ทฤษฎี Midy ได้หรือไม่ ขั้นตอนพิสูจน์ทฤษฎี Midy รับตัวเศษและตัวส่วน (ตัวส่วนต้องเป็นจำนวนเฉพาะ) หาร ตรวจสอบทศนิยมซ้ำ เก็บตัวเลขทศนิยมจนกว่าจะซ้ำ ถ้าจำนวนหลักเป็นเลขคู่ แบ่งครึ่ง บวกครึ่ง

  9. Minimum Sum Path ในอาร์เรย์ 3 มิติ (3-D Array) ใน C++

    ได้รับลูกบาศก์ (cube) ที่สร้างจากอาร์เรย์ 3 มิติ cube[length][breadth][height] หา minimum sum path จากการเดินทางผ่านลูกบาศก์ ตัวอย่าง Input: cube 3×3×3 = {{{2,4,1},{3,4,5},{9,8,7}}, {{5,3,2},{7,6,5},{8,7,6}}, {{3,2,1},{4,3,2},{5,4,3}}} Output: Minimum Sum Path In 3-D Array are: 15 คำอธิบาย: เส้นทา

  10. เพิ่มผลรวมอาร์เรย์สูงสุดใน K การเคลื่อนที่ช่วง [L, R] ใน C++

    ได้รับอาร์เรย์ Arr[] และคิวรี 2D Q แต่ละคิวรีมี lpos, rpos, K สามารถเคลื่อนจาก index i ไป i+1 ใน 1 ขั้น หรืออยู่ที่เดิมได้ ต้องเคลื่อนจาก lpos ถึง rpos ภายใน K ขั้น สะสมค่าทุกขั้นรวมตำแหน่งเริ่มต้น หาผลรวมสูงสุด หากเคลื่อนไม่ได้พิมพ์ NO ตัวอย่าง Input: Arr[] = {1, 2, 4, -1}, Q[][3] = {{0,2,2}, {0,

  11. เพิ่มจำนวนซับอาร์เรย์ที่ XOR เป็นศูนย์สูงสุดใน C++

    ได้รับอาร์เรย์ Arr[] จำนวนเต็ม หาจำนวนซับอาร์เรย์สูงสุดที่ XOR เป็น 0 ได้ โดยสามารถสลับบิตของซับอาร์เรย์ได้ไม่จำกัดครั้ง (1 ≤ Arr[i] ≤ 10¹⁸) เงื่อนไข 2 ข้อเพื่อให้ซับอาร์เรย์ XOR เป็น 0 โดยการสลับบิต: จำนวน set bits ในช่วง left ถึง right เป็นเลขคู่ สำหรับช่วงใดๆ: ผลรวมบิต ≤ 2 × (ค่าสูงสุดของ set

  12. 2-3 Trees โครงสร้างข้อมูลและอัลกอริทึมใน C++

    2-3 Tree เป็นต้นไม้ในโครงสร้างข้อมูลที่โหนดทุกตัวเป็น 2-node หรือ 3-node เป็นกรณีพิเศษของ B-Tree ออร์เดอร์ 3 2-node: มี 1 ส่วนข้อมูล (data) และ 2 ลูก 3-node: มี 2 ส่วนข้อมูล และ 3 ลูก คุณสมบัติของ 2-3 Tree โหนดภายในทุกตัวเป็น 2-node หรือ 3-node โหนดที่มี 1 data → 2-node มี 2 ลูก หรือเป็น leaf

  13. ฟีเจอร์ใหม่ของ C++17

    คณะกรรมการมาตรฐาน C++ เปิดตัวฟีเจอร์ใหม่ทุก 3 ปี สองส่วนหลักคือ Core Language และ Standard Template Library (STL) ฟีเจอร์ใหม่เน้นโค้ดสะอาด กระชับ และง่ายขึ้น ดังนี้ 1. Fold Expressions (นิพจน์การพับ) ใช้เขียนโค้ดสั้นสำหรับจำนวนอาร์กิวเมนต์ไม่คงที่ ที่ส่งเข้าฟังก์ชันหรือคืนค่า รองรับ unary/binary l

  14. Min-Max Range Queries ในอาร์เรย์ด้วย C++ (Segment Tree)

    ได้รับอาร์เรย์ Arr[] ขนาด N ต้องการหาค่าต่ำสุดและสูงสุดในช่วง index ที่กำหนดโดย Query (QStart ถึง QEnd) ตัวอย่าง Input: Arr[] = {1, 2, 3, 4, 5}, QStart = 1, QEnd = 4 Output: Minimum Value: 2, Maximum Value: 5 คำอธิบาย: Index 1 ถึง 4 มีค่า 2,3,4,5 → min=2, max=5 Input: Arr[] = {10, 12, 3, 2, 5, 18

  15. การแสดงผลในหน่วยความจำของ Binomial Heap ใน C++

    Binomial Tree (ต้นไม้ไบโนเมียล) คืออะไร? Binomial Tree เป็นโครงสร้างข้อมูลแบบต้นไม้ที่มีลำดับ (ordered tree) โดย B₀ ประกอบด้วยโหนดเดียว ส่วน Bₖ ประกอบด้วยสอง Binomial Tree คือ Bₖ₋₁ ที่เชื่อมต่อกัน รากของต้นหนึ่งจะเป็นลูกซ้ายสุดของรากอีกต้นหนึ่ง ใช้ในการวิเคราะห์ทุนหรือหุ้น โหนดของ Binomial Tree แท

  16. จัดเรียงอาร์เรย์เงื่อนไข arr[i] >= arr[j] หาก i คู่ และ arr[i] <= arr[j] หาก i คี่ และ j < i ใน C++

    = arr[j] สำหรับ j < i; หาก index i เป็นเลขคี่ → arr[i] <= arr[j] สำหรับ j < i ตัวอย่างการทำงาน (Input/Output) ตัวอย่างที่ 1 Input: int arr[] = {5, 9, 10, 12, 32, 35, 67, 89} Output: Array after rearranging elements are: 12 32 10 35 9 67 5 89 คำอธิบาย: จัดเรียงโดย index คู่ (0,2,4,6) ใส่ค่ามากไปน้

  17. โปรแกรมเรียกซ้ำพิมพ์ตัวเลขน้อยกว่า N ที่ประกอบด้วยเลข 1 และ 3 เท่านั้นใน C++

    เราได้รับตัวแปรจำนวนเต็ม N เก็บค่าบวก งานคือพิมพ์ตัวเลขทั้งหมดที่น้อยกว่า N และประกอบด้วยเลข 1, 3 หรือการรวมของทั้งสองเท่านั้น แบบเรียกซ้ำ (recursive) ตัวอย่างการทำงาน (Input/Output) ตัวอย่างที่ 1 Input: int num = 40 Output: Recursive program to print all numbers less than N which consist of digi

  18. ผลรวมตัวเลขแบบเรียกซ้ำของ n^x เมื่อ n และ x ใหญ่มากใน C++

    เราได้รับตัวแปรจำนวนเต็มบวก num และ x งานคือคำนวณ num^x แบบเรียกซ้ำ (recursive) จากนั้นบวกตัวเลขแต่ละหลักของผลลัพธ์จนได้หลักเดียว (digital root) และนำค่าหลักเดียวนั้นมาเป็นผลลัพธ์ ตัวอย่างการทำงาน (Input/Output) ตัวอย่างที่ 1 Input: int num = 2345, int x = 3 Output: Recursive sum of digit in n^x,

  19. โปรแกรม C++ จัดเรียงสมาชิกอาร์เรย์ที่หาร x ลงตัว ให้เรียงเพิ่มขึ้น

    เราได้รับอาร์เรย์จำนวนเต็ม int arr[] และตัวแปรจำนวนเต็ม x งานคือจัดเรียงสมาชิกในอาร์เรย์ที่หาร x ลงตัว (เป็นพหุคูณของ x) ให้เรียงลำดับเพิ่มขึ้น ในขณะที่สมาชิกที่ไม่ใช่พหุคูณของ x คงตำแหน่งเดิมไว้ ตัวอย่างการทำงาน (Input/Output) ตัวอย่างที่ 1 Input: int arr[] = {4, 24, 3, 5, 7, 22, 12, 10}, int x

  20. โปรแกรม C++ จัดเรียงอาร์เรย์ในรูปแบบสูงสุด-ต่ำสุด (Maximum Minimum Form)

    เราได้รับอาร์เรย์จำนวนเต็มซึ่งอาจเรียงลำดับหรือไม่ได้ ถ้าไม่ได้เรียง ให้เรียงลำดับก่อน จากนั้นจัดเรียงอาร์เรย์ใหม่ในรูปแบบ: ตัวแรกเป็นค่าสูงสุด ตัวที่สองเป็นค่าต่ำสุด ตัวที่สามเป็นค่าสูงสุดอันดับสอง ตัวที่สี่เป็นค่าต่ำสุดอันดับสอง และทำซ้ำไปเรื่อยๆ ตัวอย่างการทำงาน (Input/Output) ตัวอย่างที่ 1 In

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:273/301  20-คอมพิวเตอร์/Page Goto:1 267 268 269 270 271 272 273 274 275 276 277 278 279