Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. โปรแกรม C++ ใช้ Schonhage-Strassen Algorithm คูณเลขใหญ่

    Schonhage-Strassen Algorithm ใช้สำหรับคูณสองจำนวน อัลกอริทึมนี้เป็นการคูณแบบ asymptotically fast สำหรับจำนวนเต็มขนาดใหญ่ ในทางปฏิบัติ Schonhage-Strassen เริ่มเกินกว่าวิธีเก่าๆ เช่น Karatsuba และ Toom-Cook สำหรับตัวเลขเกิน 2^2^15 ถึง 2^2^17 (10,000 ถึง 40,000 หลักสิบ) อัลกอริทึม Begin function

  2. โปรแกรม C++ ใช้ Russian Peasant Multiplication

    Russian Peasant algorithm สำหรับคูณสองจำนวน เป็นอัลกอริทึมที่รวดเร็วสำหรับคำนวณการคูณของตัวเลขยาวสองตัว อัลกอริทึม Begin Russianpeasant(num1, num2) Int result = 0 while (num2 > 0) ถ้า (num2 and 1) result = result + n; num1 = num1 left shift 1; num

  3. โปรแกรม C++ ใช้ทฤษฎีบทของออยเลอร์ (Euler's Theorem)

    นี่คือโปรแกรม C++ ที่สาธิตการใช้งานทฤษฎีบทของออยเลอร์ (Euler Theorem) ตัวเลขและโมดูลัสต้องเป็น coprime เพื่อให้ modular multiplicative inverse มีอยู่ อัลกอริทึม Begin รับ input หา modular multiplicative inverse รับ input เป็น modular value ทำ inverse array function: modInverse(x + 1, 0

  4. โปรแกรม C++ ใช้ Extended Euclidean Algorithm

    Extended Euclidean Algorithm เป็นอีกวิธีหนึ่งในการคำนวณ GCD ของสองจำนวน มีตัวแปรเพิ่มเติมเพื่อคำนวณ ax + by = gcd(a, b) มีประสิทธิภาพมากกว่าสำหรับโปรแกรมคอมพิวเตอร์ อัลกอริทึม Begin ประกาศตัวแปร a, b, x และ y gcdExtended(int a, int b, int *x, int *y) ถ้า (a == 0) *x = 0; *y = 1

  5. โปรแกรม C++ ใช้ทฤษฎีบทเล็กของเฟอร์มาต์ (Fermat's Little Theorem)

    ทฤษฎีบทเล็กของเฟอร์มาต์ (Fermats Little Theorem) เป็นหนึ่งในผลลัพธ์พื้นฐานของจำนวน론 初等 และเป็นพื้นฐานของ Fermat primality test ทฤษฎีบทนี้ได้ชื่อจาก Pierre de Fermat ซึ่งระบุในปี 1640 ทฤษฎีบทระบุว่า ถ้า p เป็นจำนวนเฉพาะ สำหรับจำนวนเต็ม a ใดๆ จำนวน a^p - a จะเป็นจำนวนเท่าของ p อัลกอริทึม Begin ฟ

  6. โปรแกรม C++ แก้ปัญหา 0-1 Knapsack

    ในปัญหา 0-1 Knapsack มีชุดของรายการ แต่ละรายการมีน้ำหนักและค่า เราต้องกำหนดจำนวนของแต่ละรายการที่จะใส่ในชุด เพื่อให้น้ำหนักรวมน้อยกว่าหรือเท่ากับขีดจำกัดที่กำหนด และค่ารวมมากที่สุด Input Value = [10, 20, 30, 40, 60, 70] Weight = [1, 2, 3, 6, 7, 4] int w = 7 Output knapsack value is: 100 อัลกอริท

  7. โปรแกรม C++ แก้ปัญหา Fractional Knapsack

    ในปัญหา Fractional Knapsack มีชุดของรายการ แต่ละรายการมีน้ำหนักและค่า เราต้องแบ่งรายการเพื่อเพิ่มค่ารวมของกระเป๋า และสามารถทำได้ด้วย greedy approach อัลกอริทึม Begin สร้างอาร์เรย์ของโครงสร้าง Item ประกาศ value, weight, knapsack weight และ density คำนวณ density = value/weight สำหรับแต่ล

  8. โปรแกรม C++ แบ่งจำนวนเต็มเป็นผลรวมทุกแบบที่เป็นไปได้ (Integer Partition)

    นี่คือโปรแกรม C++ เพื่อหาการแบ่ง (partition) ที่ไม่ซ้ำกันของจำนวนเต็มที่กำหนด ให้ผลรวมของการแบ่งได้จำนวนเต็มนั้น ในโปรแกรมนี้ จำนวนเต็มบวก n ถูกกำหนด และสร้างวิธีที่ไม่ซ้ำกันทั้งหมดในการแทน n เป็นผลรวมของจำนวนเต็มบวก อัลกอริทึม Begin function displayAllUniqueParts(int m): ประกาศอาร์เรย

  9. โปรแกรม C++ ใช้ Bin Packing Algorithm

    ปัญหา Bin Packing เป็นประเภทพิเศษของ Cutting Stock Problem ในปัญหา Bin Packing วัตถุที่มีปริมาตรต่างกันต้องถูกบรรจุลงในจำนวนจำกัดของภาชนะหรือถัง (bins) แต่ละอันมีปริมาตร V โดยที่จำนวนถังที่ใช้น้อยที่สุด ในทฤษฎีความซับซ้อนทางคอมพิวเตอร์ เป็นปัญหา NP-hard แบบ combinational เมื่อจำนวนถังจำกัดที่ 1 แล

  10. โปรแกรม C++ คำนวณ DFT Coefficients โดยตรง

    ใน Discrete Fourier Transform (DFT) รายการจำกัดของตัวอย่างที่ห่างกันเท่าๆ กันของฟังก์ชัน จะถูกแปลงเป็นรายการ係数ของการรวมซึ่งมีค่า sinusoids 複素数จำกัด พวกมันเรียงตามความถี่ ที่มีค่าตัวอย่างเดียวกัน เพื่อแปลงฟังก์ชันที่ตัวอย่างแล้วจากโดเมนต้นฉบับ (มักเป็นเวลาหรือตำแหน่งตามเส้น) ไปยังโดเมนความถี่ อัลกอ

  11. โปรแกรม C++ คำนวณ Discrete Fourier Transform แบบ Naive

    ใน Discrete Fourier Transform (DFT) รายการจำกัดของตัวอย่างที่ห่างกันเท่าๆ กันของฟังก์ชัน จะถูกแปลงเป็นรายการ係数ของการรวมซึ่งมีค่า sinusoids 複素数จำกัด พวกมันเรียงตามความถี่ ที่มีค่าตัวอย่างเดียวกัน เพื่อแปลงฟังก์ชันที่ตัวอย่างแล้วจากโดเมนต้นฉบับ (มักเป็นเวลาหรือตำแหน่งตามเส้น) ไปยังโดเมนความถี่ อัลกอ

  12. โปรแกรม C++ คำนวณ 2D FFT แบบ In-place สำหรับอาร์เรย์ Complex

    Fast Fourier Transform (FFT) เป็นอัลกอริทึมสำหรับคำนวณ Discrete Fourier Transform (DFT) และผกผัน โดยพื้นฐาน Fourier analysis แปลงเวลา (หรือพื้นที่) เป็นความถี่ และในทางกลับกัน FFT คำนวณการแปลงอย่างรวดเร็วโดยแยกตัวประกอบเมทริกซ์ DFT เป็นผลคูณของ sparse factors (ส่วนใหญ่เป็นศูนย์) อัลกอริทึม Begin

  13. โปรแกรม C++ หาลำดับฟีโบนัชชีด้วย Matrix Exponentiation

    เลขฟีโบนัชชี (Fibonacci numbers) ซึ่งมักแทนด้วย Fn เป็นลำดับที่แต่ละตัวเป็นผลรวมของสองตัวก่อนหน้า เริ่มจาก 0 และ 1 นั่นคือ F₀ = 0 และ F₁ = 1 และ Fn = Fₙ₋₁ + Fₙ₋₂ สำหรับ n > 1 อัลกอริทึม Begin สร้างอาร์เรย์ 2 มิติสองตัว สร้างฟังก์ชันคูณเมทริกซ์ สร้างฟังก์ชันหายกกำลังของเมทริกซ์

  14. โปรแกรม C++ ใช้ Quick Sort แบบสุ่ม Pivot (Randomized)

    เทคนิค Quicksort ทำงานโดยแยกรายการเป็นสองส่วน เริ่มต้นเลือก pivot element ด้วย partitioning algorithm ส่วนซ้ายของ pivot เก็บค่าที่น้อยกว่า pivot ส่วนขวาเก็บค่าที่มากกว่า หลัง partitioning แล้ว แต่ละส่วนจะถูก partition อีกครั้งด้วยขั้นตอนเดียวกัน ในกรณีนี้เราเลือก pivot element แบบสุ่ม หลังเลือก pi

  15. โปรแกรม C++ เรียงตัวเลขน้อยกว่า 100 ด้วย Counting Sort O(n)

    เพื่อเรียงตัวเลขเล็กๆ ในเวลาเชิงเส้น เราสามารถใช้เทคนิค Counting Sort Counting Sort เป็นการเรียงลำดับที่เสถียร (stable) ใช้เรียงวัตถุตามคีย์ที่เป็นตัวเลขน้อย นับจำนวนคีย์ที่มีค่าเท่ากัน เทคนิคนี้มีประสิทธิภาพเมื่อความต่างระหว่างคีย์ต่างๆ ไม่มาก มิฉะนั้นอาจเพิ่ม space complexity ความซับซ้อนของ Cou

  16. โปรแกรม C++ ใช้ Quick Sort กับข้อมูลจำนวนมาก

    เทคนิค Quicksort ทำงานโดยแยกรายการเป็นสองส่วน เริ่มต้นเลือก pivot element ด้วย partitioning algorithm ส่วนซ้ายของ pivot เก็บค่าที่น้อยกว่า pivot ส่วนขวาเก็บค่าที่มากกว่า หลัง partition แล้ว แต่ละส่วนจะถูก partition อีกครั้งด้วยขั้นตอนเดียวกัน ที่นี่เราพิจารณาอาร์เรย์ขนาดใหญ่ (เกือบ 100 องค์ประกอบ)

  17. โปรแกรม C++ ใช้ Merge Sort กับ Linked List

    เทคนิค Merge Sort ใช้หลักการแบ่งและปกครอง (divide and conquer) เราแบ่งข้อมูลทั้งหมดเป็นส่วนๆ เล็กๆ แล้วรวมกลับเป็นชิ้นใหญ่ในลำดับที่เรียงแล้ว อัลกอริทึมนี้มีประสิทธิภาพสำหรับ worst case เพราะมี time complexity ต่ำสำหรับ worst case เช่นกัน Linked list สามารถเรียงลำดับด้วย merge-sort ได้อย่างมีประสิ

  18. โปรแกรม C++ แสดงกราฟด้วย Adjacency Matrix

    Adjacency matrix ของกราฟเป็นเมทริกซ์สี่เหลี่ยมขนาด V x V โดย V คือจำนวนจุดยอดของกราฟ G ในเมทริกซ์นี้ ทั้งสองด้านจะมีจุดยอด V จุด ถ้ากราฟมีเส้นเชื่อมจากจุดยอด i ไปยัง j ใน Adjacency Matrix ที่แถว i และคอลัมน์ j จะเป็น 1 (หรือค่าที่ไม่ใช่ศูนย์สำหรับกราฟถ่วงน้ำหนัก) มิฉะนั้นจะเป็น 0 ความซับซ้อนของการ

  19. โปรแกรม C++ แสดงกราฟด้วย Incidence Matrix

    Incidence matrix ของกราฟเป็นอีกการแสดงผลหนึ่งเพื่อเก็บในหน่วยความจำ เมทริกซ์นี้ไม่ใช่เมทริกซ์สี่เหลี่ยม ลำดับของ incidence matrix คือ V x E โดย V คือจำนวนจุดยอด และ E คือจำนวนเส้นเชื่อมในกราฟ ในแต่ละแถวของเมทริกซ์นี้ เราวางจุดยอด และในแต่ละคอลัมน์คือเส้นเชื่อม ในการแสดงผลนี้ สำหรับเส้นเชื่อม e {u,

  20. โปรแกรม C++ แสดงกราฟด้วย Adjacency List

    การแสดงกราฟด้วย Adjacency List เป็นการแสดงผลแบบ linked list ในการแสดงผลนี้เรามีอาร์เรย์ของลิสต์ ขนาดอาร์เรย์คือ V โดย V คือจำนวนจุดยอด กล่าวอีกนัยหนึ่ง เรามีอาร์เรย์เก็บ V ลิสต์ที่แตกต่างกัน หากหัวลิสต์คือจุดยอด u หมายความว่าจะเก็บจุดยอดติดจัตุรัสทั้งหมดของ u ความซับซ้อนของการแสดงผลด้วย Adjacency

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:31/301  20-คอมพิวเตอร์/Page Goto:1 25 26 27 28 29 30 31 32 33 34 35 36 37