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

    ปัญหา หาสมาชิกในอาร์เรย์ที่ มากกว่าทั้งสมาชิกก่อนหน้าและสมาชิกถัดไป (Peak Elements) ตัวอย่าง arr[] = {3, 2, 5, 7, 3, 4, 5} 3) แนวทางแก้ปัญหา arr[i+1] โปรแกรมตัวอย่าง #include <iostream> using namespace std; void findPeakElements(int arr[], int n) { for (int i = 1; i arr[i+1])

  2. สมาชิกอาร์เรย์ที่ไม่หารด้วยสมาชิกอาร์เรย์อื่นได้เลยใน C++

    ปัญหา ได้รับอาร์เรย์ arr1[] และ arr2[] หาสมาชิกใน arr1 ที่ ไม่หารลงตัว ด้วยสมาชิกใดๆ ใน arr2 ตัวอย่าง arr1 = {17, 15, 5, 12, 8}, arr2 = {5, 4} Output: 17 (เพราะ 15 หาร 5 ลงตัว, 5 หาร 5 ลงตัว, 12 หาร 4 ลงตัว, 8 หาร 4 ลงตัว) แนวทางแก้ปัญหา วิธีที่ 1: Naive O(N×M) วนลูปสองชั้น ตรวจสอบทุกคู่ วิธีที่

  3. หาจำนวนสมาชิกที่ต้องเพิ่มให้ครบช่วงในอาร์เรย์ C++

    ปัญหา ได้รับอาร์เรย์ arr[] หาจำนวนสมาชิกที่ต้องเพิ่มเข้าไป เพื่อให้ครบทุกจำนวนในช่วง [min, max] ของอาร์เรย์ ตัวอย่าง อินพุต: arr[] = {5, 8, 3, 1, 6, 2} เอาต์พุต: 2 คำอธิบาย: ช่วงคือ 1 ถึง 8 ขาด 4 และ 7 แนวทางแก้ปัญหา เรียงลำดับอาร์เรย์ วนลูปตรวจสอบว่า arr[i]+1 == arr[i+1] หรือไม่ ถ้าไม่เท่ากัน น

  4. อัลกอริธึม Elo Rating ใน C++

    บทนำ Elo Rating Algorithm ใช้อันดับผู้เล่นในเกมแข่งขัน คะแนนจะเปลี่ยนตามผลการแข่งขัน หลักการทำงาน ผู้เล่นสองคน มี Rating คือ R1, R2 ถ้าผู้เล่น 1 ชนะ: คะแนนที่โอนน้อย (เพราะคาดการณ์ไว้ว่าเขาจะชนะ) ถ้าผู้เล่น 2 ชนะ: คะแนนที่โอนมาก (เพราะเป็น Upset) สูตร: P1 = 1 / (1 + 10^((R2-R1)/400)) // ความน่

  5. เลข Emirp (Emirp Numbers) ใน C++

    Emirp Number คืออะไร? Emirp (Prime สะกดย้อนกลับ) คือจำนวนเฉพาะที่เมื่อกลับลำดับหลักแล้ว ได้จำนวนเฉพาะอีกตัวหนึ่งที่ ต่างจากตัวเดิม จำนวนเฉพาะที่เป็น Palindrome (เช่น 11, 101) และจำนวนเฉพาะหลักเดียว ไม่ใช่ Emirp ตัวอย่าง Emirp: 13, 17, 31, 37, 71, 73, 79, 97, ... โปรแกรมพิมพ์ Emirp Numbers น้อยกว่

  6. การจำลองอาร์เรย์ 2 มิติด้วยอาร์เรย์ 1 มิติใน C++

    แนวคิด การแปลงอาร์เรย์ 2 มิติ (n×m) เป็น 1 มิติ ขนาดของอาร์เรย์ 1 มิติ = n×m มี 2 วิธีการจัดเก็บ: 1. Row Major Order เก็บแถวละแถว ตัวแปร (i,j) ในอาร์เรย์ 2 มิติ จะอยู่ที่ index = j + i×m ในอาร์เรย์ 1 มิติ 2. Column Major Order เก็บคอลัมน์ละคอลัมน์ ตัวแปร (i,j) จะอยู่ที่ index = i + j×n ตัวอย่าง

  7. ลำดับไบต์ (Endian Order) และไฟล์ไบนารีใน C++

    Endianness คืออะไร? ในการจัดการไฟล์ไบนารีและข้อมูล Endianness คือลำดับของไบต์ของข้อมูลดิจิทัลภายในหน่วยความจำคอมพิวเตอร์ สองประเภทของ Endian Order Big-endian: เก็บไบต์ที่มีนัยสำคัญสูงสุด (Most Significant Byte) ก่อน Little-endian: เก็บไบต์ที่มีนัยสำคัญน้อยที่สุด (Least Significant Byte) ก่อน คว

  8. เลข Entringer (Entringer Number) ใน C++

    บทนำ เลข Entringer E(n, k) คือจำนวนการเรียงสับเปลี่ยนของ {1, 2, ..., n+1} ที่เริ่มต้นด้วย k+1 และสลับกันระหว่างลดและเพิ่ม ความสัมพันธ์เวียนเกิด (Recurrence Relation) 0) ตัวอย่าง E(5, 3) = 14 โปรแกรมตัวอย่าง #include <iostream> using namespace std; int EntringerNumber(int n, int k) {

  9. การนับจำนวนต้นไม้แบบทวิภาค (Enumeration of Binary Trees) ใน C++

    บทนำ Enumeration of Binary Tree คือการนับจำนวนต้นไม้แบบทวิภาคที่แตกต่างกัน (Distinct) และไม่มีฉลาก (Unlabeled) ที่มีจำนวนโหนดเท่ากัน สองประเภทของต้นไม้แบบทวิภาค Labeled Binary Tree: โหนดมีฉลากค่า Unlabeled Binary Tree: โหนดไม่มีฉลาก จำนวนต้นไม้ Labeled N=1: 1, N=2: 4, N=3: 30, N=4: 336 สูตร: C(

  10. รูปทรง Equable (Equable Shapes) ใน C++

    ปัญหา ได้รับพิกัดของรูปหลายเหลี่ยม ตรวจสอบว่าเป็นรูปทรง Equable หรือไม่ (เส้นรอบรูป = พื้นที่) ตัวอย่าง อินพุต: polygon[][] = {{0,0}, {5,7}, {2,0}} เอาต์พุต: Not equable คำอธิบาย: เส้นรอบรูป ≈ 18.21, พื้นที่ = 7 แนวทางแก้ปัญหา คำนวณพื้นที่และเส้นรอบรูปจากพิกัด แล้วเปรียบเทียบ เส้นรอบรูป: ผลรวมระ

  11. ผลรวมเท่ากับ XOR (Equal Sum and XOR) ใน C++

    ปัญหา ได้รับจำนวนเต็ม n หาจำนวนจำนวนเต็ม i (0 ≤ i ≤ n) ที่ทำให้ (n + i) = (n ^ i) ตัวอย่าง อินพุต: n = 4 เอาต์พุต: 4 คำอธิบาย: i = 0,1,2,3 ตรงเงื่อนไข (4+0=4^0, 4+1=4^1, 4+2=4^2, 4+3=4^3) แต่ i=4 ไม่ตรง แนวทางแก้ปัญหา วิธีที่ 1: Brute Force วนลูป i=0 ถึง n ตรวจสอบ (n+i) == (n^i) วิธีที่ 2: ทฤษฎีบ

  12. การทำให้อาร์เรย์เท่ากันด้วยการโอนย้ายค่าระหว่างสมาชิกใน C++

    ปัญหา ได้รับอาร์เรย์ n สมาชิก ต้องนับจำนวนการดำเนินการ (บวก/ลบ) เพื่อทำให้ทุกสมาชิกมีค่าเท่ากัน โดยโอนค่าระหว่างสมาชิกในอาร์เรย์เท่านั้น ตัวอย่าง อินพุต: arr[] = {4, 0, 3, 1, 2} เอาต์พุต: 3 คำอธิบาย: ค่าเท่ากันคือ 2 โอน 1 จาก arr[3] ไป arr[1] แล้วโอน 2 จาก arr[0] ไป arr[1] แนวทางแก้ปัญหา หาค่าเฉ

  13. เลข Equidigital ใน C++

    ปัญหา เลข Equidigital คือจำนวนที่จำนวนหลักของมัน เท่ากับจำนวนหลักในการแยกตัวประกอบเฉพาะ (Prime Factorization) ของมัน ได้รับจำนวน n ต้องพิมพ์เลข Equidigital ทั้งหมดที่น้อยกว่าหรือเท่ากับ n ตัวอย่าง อินพุต: n = 12 เอาต์พุต: 1 2 3 5 7 10 11 แนวทางแก้ปัญหา หาจำนวนเฉพาะทั้งหมดด้วย Sieve of Eratosthen

  14. ดัชนีสมดุล (Equilibrium Index) ของอาร์เรย์ใน C++

    ปัญหา ได้รับอาร์เรย์ arr[] ขนาด n หา index ที่ผลรวมของสมาชิกก่อน index นั้น เท่ากับผลรวมของสมาชิกหลัง index นั้น เงื่อนไข: sum(arr[0...e-1]) = sum(arr[e+1...n-1]) ตัวอย่าง อินพุต: arr[] = {5, 1, 2, 8, 3, 4, 1} เอาต์พุต: 3 คำอธิบาย: arr[0]+arr[1]+arr[2] = 5+1+2 = 8 = arr[4]+arr[5]+arr[6] = 3+4+1 แ

  15. วิธีออยเลอร์ (Euler Method) แก้สมการเชิงอนุพันธ์ใน C++

    ปัญหา ได้รับสมการเชิงอนุพันธ์ f(x, y) = dy/dx พร้อมค่าเริ่มต้น y(x₀) = y₀ ต้องหาคำตอบโดยใช้วิธีออยเลอร์ วิธีออยเลอร์ (Euler Method) เป็นขั้นตอนเชิงตัวเลขอันดับหนึ่ง (First-order numerical procedure) สำหรับหาคำตอบประมาณของสมการเชิงอนุพันธ์ สูตร: y(n+1) = y(n) + h * f(x(n), y(n)) h = (x(n) - x(0)) /

  16. เอกลักษณ์สี่เหลี่ยมจัตุรัสของออยเลอร์ (Euler's Four Square Identity) ใน C++

    ปัญหา ได้รับสองจำนวน ต้องหาผลคูณโดยใช้เอกลักษณ์สี่เหลี่ยมจัตุรัสของออยเลอร์ ซึ่งระบุว่าผลคูณของสองจำนวนที่แสดงเป็นผลรวมของสี่กำลังสอง สามารถแสดงเป็นผลรวมของสี่กำลังสองได้อีกครั้ง สูตร: a = x1² + x2² + x3² + x4² b = y1² + y2² + y3² + y4² a * b = z1² + z2² + z3² + z4² ตัวอย่าง อินพุต: a = 54 = 2²+3

  17. เลขออยเลอร์ (Eulerian Number) ใน C++

    บทนำ ในคณิตศาสตร์ เลขออยเลอร์ เป็นเลขจัดหมู่พิเศษ ที่กำหนดจำนวนการเรียงสับเปลี่ยน (Permutations) ที่สมาชิกถัดไปมีค่ามากกว่าสมาชิกก่อนหน้าจำนวน m ตัว สัญลักษณ์ A(n, m) คือการเรียงสับเปลี่ยนของ 1 ถึง n ที่มีความต่างระหว่างสองตัวเลขเป็น m ตัวอย่าง อินพุต: n = 4, m = 2 เอาต์พุต: 11 คำอธิบาย: จากการเรี

  18. การประเมินนิพจน์บูลีนแบบสตริงใน C++

    ปัญหา ได้รับสตริง exp ที่แทนนิพจน์บูลีน ต้องประเมินค่าและส่งคืนผลลัพธ์ ตัวอักษรที่ถูกต้องคือ: 0 หรือ 1 แทนค่าบูลีน & แทน AND | แทน OR ^ แทน XOR ตัวอย่าง อินพุต: str = 1&1|0^1^0&1 เอาต์พุต: 0 คำอธิบาย: 1&1|0^1^0&1 1 AND 1 OR 0 XOR 1 XOR 0 AND 1 1 OR 0 XOR 1 XOR 0 AND 1 1 XOR 1 XOR 0 A

  19. การประเมินนิพจน์อาร์เรย์ด้วยตัวเลข + และ - ใน C++

    ปัญหา ได้รับอาร์เรย์ arr[] ที่ประกอบด้วย n ค่าตัวอักษร แทนนิพจน์คณิตศาสตร์ ประกอบด้วยตัวเลข ตัวอักษร + และ - เท่านั้น งานคือการประเมินค่านิพจน์นี้ ตัวอย่าง อินพุต: arr = {5, +, 2, -8, +, 9} เอาต์พุต: 8 คำอธิบาย: นิพจน์คือ 5 + 2 - 8 + 9 = 8 แนวทางแก้ปัญหา วิธีแก้คือการดำเนินการทีละขั้นตอนและส่งคืน

  20. การประเมินนิพจน์คำนำหน้า (Prefix) ใน C++

    นิพจน์คำนำหน้า (Prefix Expression) คืออะไร? ในการเขียนแบบนี้ ตัวดำเนินการจะถูกวาง หน้า ตัวถูกดำเนินการ เช่น +ab ซึ่งเทียบเท่ากับแบบ Infix คือ a + b นิพจน์คำนำหน้ายังเรียกอีกอย่างว่า Polish Notation ตัวอย่าง * + 6 9 - 3 1 นิพจน์คำนำหน้าสามารถประเมินค่าได้เร็วกว่านิพจน์แบบ Infix และไม่มีวงเล็บ ทำให้

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