Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม
การเขียนโปรแกรม
  1. จำนวนเส้นทางจากต้นทางไปปลายทางที่มี Edge ทั้งหมด k เส้น (Walks with Exactly K Edges)

    บทนำ กำหนด Directed Graph (กราฟมีทิศทาง) อีกสองจุด u และ v กำหนด u เป็นจุดเริ่มต้น และ v เป็นจุดสิ้นสุด ภารกิจคือหาจำนวนเส้นทาง (Walks) จากจุด u ไป v ที่มี Edge ทั้งหมด k เส้น ค่า k ก็ถูกกำหนดในอัลกอริทึม ด้วยการใช้ Dynamic Programming เราต้องสร้างตาราง 3 มิติ (3D Table) โดยแถวจะชี้ค่า u คอลัมน์จะชี

  2. วิธีเร็วที่สุดในการคูณสองจำนวน (Fast Multiplication)

    บทนำ กำหนดตัวเลขสองตัวเป็นสตริงบाइनนารี (Binary String) ภารกิจของเราคือหาผลคูณของตัวเลขเหล่านั้นอย่างรวดเร็วและมีประสิทธิภาพ ใช้กลยุทธ์ Divide and Conquer (แบ่งและเอาชนะ) สามารถแก้ปัญหาได้อย่างมีประสิทธิภาพ เราจะแบ่งตัวเลขออกเป็นสองครึ่ง ให้ Xleft และ Xright เป็นสองส่วนของตัวเลขแรก X และ Yleft, Yrig

  3. การแปลงตัวเลขเป็นคำอ่าน (Number to Word Conversion)

    บทนำ อัลกอริทึมนี้จะแปลงตัวเลขที่กำหนดให้เป็นคำอ่านภาษาอังกฤษ เช่น 564 จะกลายเป็น Five Hundred and Sixty-Four สำหรับอัลกอริทึมนี้ มีสตริงที่กำหนดไว้ล่วงหน้า จากรายการนั้น จะนำคำที่เหมาะสมมาสร้างเป็นคำอ่าน รายการต่างๆ มีดังนี้: Units: เก็บคำสำหรับ (0 ถึง 9) เช่น Zero, One... Nine TwoDigits:

  4. อัลกอริทึม Flood Fill

    บทนำ กำหนด Matrix หนึ่งอัน Matrix นี้แทนหน้าจอ แต่ละอิลิเมนต์ (i, j) ของหน้าจอแทน Pixel สีของ Pixel นั้นถูกทำเครื่องหมายด้วยตัวเลขต่างๆ ในอัลกอริทึมนี้ Pixel จะถูกเติมสีใหม่เมื่อมันมีสีเดิมที่เลือก ถ้าสีไม่ใช่สีเดิม Pixel นั้นจะไม่ถูกเติม หลังจากเติม Pixel แล้ว จะตรวจสอบ Pixel ด้านบน ล่าง ซ้าย ขวา เ

  5. เลขคู่ที่เป็นผลรวมของจำนวนเฉพาะ (Even Number with Prime Sum)

    บทนำ เลขคู่ทุกตัวตั้งแต่ 4 เป็นต้นไป สามารถแสดงเป็นผลรวมของจำนวนเฉพาะสองจำนวนได้ บางครั้งตัวเลขอาจมีการรวมของจำนวนเฉพาะมากกว่าหนึ่งวิธี ตัวอย่าง: 10 = (5 + 5) และ (7 + 3) อัลกอริทึมนี้จะหาการรวมของจำนวนเฉพาะทั้งหมดสำหรับตัวเลขที่กำหนด เมื่อตัวเลข x เป็นจำนวนเฉพาะ เราจะตรวจสอบว่า (number - x) เป็นจำน

  6. อัลกอริทึม Graham Scan (Convex Hull)

    บทนำ Convex Hull คือพื้นที่ปิดขนาดเล็กที่สุดที่สามารถครอบคลุมจุดข้อมูลที่กำหนดทั้งหมดได้ อัลกอริทึม Grahams Scan จะหาจุดมุมของ Convex Hull ในอัลกอริทึมนี้ ขั้นแรกเลือกจุดที่ต่ำที่สุด จุดนั้นคือจุดเริ่มต้นของ Convex Hull จุดยอดที่เหลือ n-1 จุด ถูกเรียงลำดับตามทิศทางทวนเข็มนาฬิกาจากจุดเริ่มต้น ถ้ามีจุ

  7. อัลกอริทึม Jarvis March (Convex Hull)

    บทนำ อัลกอริทึม Jarvis March ใช้ตรวจจับจุดมุมของ Convex Hull จากชุดจุดข้อมูลที่กำหนด เริ่มจากจุดที่ซ้ายสุดของชุดข้อมูล เราเก็บจุดใน Convex Hull โดยการหมุนทวนเข็มนาฬิกา (Anti-clockwise) จากจุดปัจจุบัน สามารถเลือกจุดถัดไปได้โดยตรวจสอบทิศทาง (Orientation) ของจุดเหล่านั้นจากจุดปัจจุบัน เมื่อมุมใหญ่ที่สุ

  8. หาองค์ประกอบที่ใหญ่ที่สุดอันดับ k ในอาเรย์ (Kth Largest Element)

    บทนำ จากชุดข้อมูล อัลกอริทึมนี้จะหาองค์ประกอบที่ใหญ่ที่สุดถึงอันดับ k ของอาเรย์ ปัญหานี้แก้ได้ง่ายโดยการเรียงลำดับอาเรย์ สามารถเรียงได้ทั้ง ascending หรือ descending หากเรียง descending เราจะได้ k อิลิเมนต์แรกเป็นผลลัพธ์ อินพุตและเอาต์พุต Input: องค์ประกอบของอาเรย์: {1, 23, 12, 9, 30, 2, 50, 63, 87

  9. การหารแบบ DFA (DFA-based Division)

    บทนำ Deterministic Finite Automaton (DFA) ใช้ตรวจสอบว่าตัวเลขหารด้วยอีกตัวเลข k ลงตัวหรือไม่ ถ้าไม่ลงตัว อัลกอริทึมนี้ยังหาเศษได้ด้วย สำหรับการหารแบบ DFA ขั้นแรกต้องหาตารางสถานะการเปลี่ยน (Transition Table) ของ DFA โดยใช้ตารางนั้น สามารถหาคำตอบได้ง่าย ใน DFA แต่ละสถานะมีการเปลี่ยนแปลง (Transition) เ

  10. การบวกเลขฐาน n (Adding Base-n Numbers)

    บทนำ ในปัญหานี้ กำหนดตัวเลขสองตัว ฐานของตัวเลขเหล่านั้นคือ n เราต้องหาผลลัพธ์ของการบวกตัวเลขเหล่านั้นในฐาน n เช่นกัน ขั้นแรก แปลงตัวเลขเป็นเลขฐานสิบ (Decimal) จากค่าทศนิยม สามารถบวกกันได้ง่ายๆ สุดท้าย แปลงผลลัพธ์กลับเป็นเลขฐาน n อีกครั้ง ตัวเลขฐาน n ถูกให้มาในรูป String เนื่องจากตัวเลขที่มีฐานมากกว่

  11. วิธีบาบิโลเนีย หารากที่สอง (Babylonian Method for Square Root)

    บทนำ วิธีบาบิโลเนียในการหารากที่สอง 基於หนึ่งในวิธีตัวเลข (Numerical Method) ซึ่งพัฒนามาจากวิธี Newton-Raphson สำหรับแก้สมการไม่เชิงเส้น แนวคิดง่ายๆ: เริ่มจากค่า x が恣意的 (Arbitrary) และ y เป็น 1 เราสามารถหาค่าประมาณรากถัดไปได้โดยการหาค่าเฉลี่ยของ x และ y แล้วค่า y จะถูกอัปเดตด้วย number / x อินพุตและเ

  12. แฟกทอเรียลของจำนวนใหญ่ (Factorial of Large Number)

    บทนำ ในคอมพิวเตอร์ ตัวแปรถูกเก็บในหน่วยความจำ แต่ขนาดของหน่วยความจำคงที่ ดังนั้นเมื่อเราพยายามหาแฟกทอเรียลของค่าที่ใหญ่ขึ้น เช่น 15! หรือ 20! ค่าแฟกทอเรียลจะเกินขอบเขตหน่วยความจำและให้ผลลัพธ์ผิด สำหรับการคำนวณจำนวนใหญ่ เราต้องใช้ Array เพื่อเก็บผลลัพธ์ แต่ละอิลิเมนต์ของ Array จะเก็บหลักต่างๆ ของผลลั

  13. ตรวจสอบว่าจุดอยู่ภายในรูปหลายเหลี่ยม (Polygon) หรือไม่

    บทนำ ในปัญหานี้ กำหนดรูปหลายเหลี่ยม (Polygon) และจุด P ต้องการตรวจสอบว่าจุดอยู่ภายในรูปหลายเหลี่ยมหรือภายนอก วิธีแก้: เราจะลากเส้นตรงจากจุด P ขยายไปจนถึงอนันต์ เส้นนี้เป็นแนวนอน หรือขนานกับแกน x จากเส้นนั้น เราจะนับว่าเส้นตัดด้านของรูปหลายเหลี่ยมกี่ครั้ง เมื่อจุดอยู่ภายใน จะตัดด้านเป็นจำนวนคี่ ถ้า P

  14. ตรวจสอบว่าเป็นจำนวนกำลังสองสมบูรณ์ (Perfect Square) หรือไม่

    บทนำ จำนวนหนึ่งถูกเรียกว่า Perfect Square Number ถ้ารากที่สองของจำนวนนั้นเป็นจำนวนเต็ม กล่าวอีกนัยหนึ่ง เมื่อรากที่สองเป็นจำนวนเต็ม จำนวนนั้นเรียกว่า Perfect Square Number เราสามารถตรวจสอบ Perfect Square ได้โดยการหารากที่สองของจำนวนนั้น และเปรียบเทียบกับ i ซ้ำๆ เพื่อหารากที่สองที่แน่นอน เมื่อรากที่ส

  15. ตรวจสอบว่าจุดสี่จุดสร้างเป็นสี่เหลี่ยมจัตุรัสหรือไม่

    บทนำ บนระนาบ 2D กำหนดจุดสี่จุด อัลกอริทึมนี้จะตรวจสอบว่าจุดสี่จุดสร้างเป็นสี่เหลี่ยมจัตุรัสหรือไม่ เงื่อนไขในการตรวจสอบสี่เหลี่ยมจัตุรัส: ด้านทั้งสี่ที่เกิดจากจุดที่กำหนดมีความยาวเท่ากัน ด้านประกอบทั้งสองตั้งฉากกัน (มุมฉาก) อินพุตและเอาต์พุต Input: จุดสี่จุด {(20, 10), (10, 20), (20, 20),

  16. ตรวจสอบว่าชุด (Set) สองชุดเป็น Disjoint Sets หรือไม่

    บทนำ เซตสองชุดเป็น Disjoint Sets เมื่อไม่มีองค์ประกอบร่วมกัน กล่าวอีกนัยหนึ่ง ถ้าเราหาการ intersect ของเซตทั้งสอง จะได้ Null Set วิธีการง่ายๆ: ในอัลกอริทึมนี้ กำหนดเซตสองชุด สมมติว่าทั้งสองเซตเรียงลำดับแล้ว เปรียบเทียบรายการระหว่างสองเซต เมื่อมีการ match แสดงว่าไม่ใช่ Disjoint Sets เมื่อไม่มีรายการต

  17. ตรวจสอบว่าส่วนเส้นสองเส้น تتัดกันหรือไม่

    บทนำ กำหนดส่วนเส้นสองเส้น จุด p1, p2 จากส่วนเส้นแรก และ q1, q2 จากส่วนเส้นที่สอง ต้องการตรวจสอบว่าส่วนเส้นทั้งสองตัดกันหรือไม่ เราสามารถบอกได้ว่าส่วนเส้นทั้งสองตัดกันเมื่อเงื่อนไขเหล่านี้เป็นจริง: เมื่อ (p1, p2, q1) และ (p1, p2, q2) มีทิศทางต่างกัน และ (q1, q2, p1) และ (q1, q2, p2) มีทิศทาง

  18. ตรวจสอบว่าจุดอยู่ภายในสามเหลี่ยมหรือไม่

    บทนำ กำหนดจุดสามจุดของสามเหลี่ยม และจุด P อีกจุดหนึ่ง ต้องการตรวจสอบว่าจุด P อยู่ภายในสามเหลี่ยมหรือไม่ วิธีแก้: ให้จุดของสามเหลี่ยมคือ A, B, และ C เมื่อพื้นที่ของสามเหลี่ยม ΔABC = ΔABP + ΔPBC + ΔAPC แสดงว่าจุด P อยู่ภายในสามเหลี่ยม อินพุตและเอาต์พุต Input: จุดของสามเหลี่ยม {(0, 0), (20, 0), (10, 3

  19. วิธี Secant แก้สมการไม่เชิงเส้น

    บทนำ วิธี Secant ใช้แก้สมการไม่เชิงเส้น (Non-linear Equations) เช่นกัน วิธีนี้คล้ายกับวิธี Newton-Raphson แต่ที่นี่เราไม่ต้องหาอนุพันธ์ของฟังก์ชัน f(x) เพียงใช้ f(x) เพียงอย่างเดียว เราสามารถหา f(x) แบบตัวเลขได้โดยใช้สูตรความต่างหารของ Newton จากสูตร Newton-Raphson เราทราบว่า: ตอนนี้ใช้สูตรความต่าง

  20. กฎสี่เหลี่ยมคางหมู (Trapezoidal Rule) สำหรับอินทิกรัลจำกัด

    บทนำ อินทิกรัลจำกัดสามารถแก้ได้ด้วยกฎสี่เหลี่ยมคางหมู การอินทิเกรตฟังก์ชัน f(x) ระหว่างช่วง a ถึง b ก็คือการหาพื้นที่ใต้เส้นโค้งจากจุด x = a ถึง x = b เพื่อหาพื้นที่นั้น เราสามารถแบ่งพื้นที่เป็น n สี่เหลี่ยมคางหมู ความกว้างของแต่ละอันคือ h ดังนั้น (b - a) = nh เมื่อจำนวนสี่เหลี่ยมคางหมูเพิ่มขึ้น ผลล

Total 1490 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:65/75  20-คอมพิวเตอร์/Page Goto:1 59 60 61 62 63 64 65 66 67 68 69 70 71