ดูหนึ่งข้อความ
  #3  
Old 11 กุมภาพันธ์ 2019, 10:21
tngngoapm's Avatar
tngngoapm tngngoapm ไม่อยู่ในระบบ
บัณฑิตฟ้า
 
วันที่สมัครสมาชิก: 13 พฤศจิกายน 2014
ข้อความ: 462
tngngoapm is on a distinguished road
Default

อ้างอิง:
ข้อความเดิมเขียนโดยคุณ thenightmare View Post
สวัสดีครับ ผมแชมป์ครับยินดีที่ได้รู้จักครับ เพิ่งสมัครครับ พอดีอยากรบกวนพี่พี่ น้องน้อง ในนี้ช่วยแก้ปัญหาให้หน่อยครับ
พอดี ผมทำ project เกี่ยวกับ programming ครับ แล้วต้องเขียน paper จึงมีเรื่องมาขอความช่วยเหลือครับ

โจทย์ คือ มีตัวเลข set หนึ่งเช่น (19,4,16,4,21) เลขนี้จะเป็น input จาก user ครับ กี่จำนวนก็ได้ แล้ว ซ้ำได้
แล้วหารูปแบบทั้งหมดที่บวกกันแล้วไม่เกินตัวเลขมากสุดในตัวอย่างคือ 21
ตัวอย่างผลลัพธ์
1. 19 < 21 จะได้ (19)
2. 4+4 < 21 จะได้ (4,4)
3. 4+16 < 21 จะได้ (4,16)
คำตอบก็คือ มี 3 sets ตามด้านบนแล้วโชว์ set ผลลัพธ์

ผมเขียนโปรแกรมเสร็จแล้วครับ แต่ปัญหาคือ
1. อยากให้ช่วยเช็คหน่อยครับว่าผลลัพธ์ออกมาครบหมด (ตอนนี้ผมเช็คเองเหมือนจะครบหมดครับ แต่ยังไม่แน่ใจว่ามีกรณีที่ไม่ครอบคลุมหรือไม่)
2.ถ้าวิธีนี้ใช้ได้ ผมอยากรู้ว่าวิธีประมาณนี้เรียกว่า อะไร ในเรื่องความน่าจะเป็นครับ ผมอยากอ่านเพิ่มเติมเพื่อไปเขียน paper ครับ
3. แล้ววิธีนี้เขียนเป็น สมการได้ไหมครับ
4.มีวิธีอื่นในการหาอีกไหมครับ แนะนำได้นะครับ ผมคิดออกวิธีเดียวครับ

วิธีที่ผมทำคือ
1.หาตัวที่มากที่สุดออกมา (21)
2.เรียงข้อมูลใหม่ใน set ที่เหลือ (4,4,16,19)
3.บวกไปเรื่อยเรื่อยจากตัวแรกครับ 4+4+skip +skip แต่ถ้าเกิน 21 ให้ข้ามแล้วบวกตัวถัดไปจนหมดครับ
4.จะได้ (4,4) เพราะบวกต่อจะเกิน
5.แล้ววนลูปเพื่อสลับตำแหน่งครับจะได้set (4,16,19,4) แล้วทำขอสามซ้ำครับ 4+16+19+....
6.จะได้ (4,16)
7.วนแบบนี้ไปเรื่อยเรื่อยครับ จนทำให้ทุกตัวเป็นตัวเริ่มต้นของ set ครับ
8ฃ. set (16,19,4,4) ก็จะได้ 16+ skip + 4 + skip (16,4)
9. set (19,4,4,16) ก็จะได้ 19 + skip + skip + skip (19)
10. เรียงข้อมูลใน set เอาเฉพาะ set ที่ไม่ซ้ำครับ (4,4),(4,16),(16,4),(19)
11. ก็จะได้คำตอบ เป็น 3 sets : (4,4),(4,16),(19)

ขอบคุณล่วงหน้านะครับ ผมไม่ค่อยเก่งเลข
ระเบียบวิธีที่เขียนมานี้น่าจะเรียกได้ว่าเป็น"อัลกอลิทึม"
ซึ่งในคณิตศาสตร์ก็มีทฤษฎีความน่าจะเป็นเช่นการเรียงสับเปลี่ยน,แฟคทอเรียลฯลฯเป็นต้นรองรับอยู่
สำหรับคำตอบนั้นสามารถใช้คณิตศาสตร์หาผลลัพธ์ได้
แต่สำหรับข้อมูลเข้าจำนวนมากๆคณิตศาสตร์ไม่สามารถรองรับได้ควรใช้อัลกอริทึมมาบริหารจัดการข้อมูล
เช่นการแบ่งกลุ่ม,การจัดเรียงข้อมูลฯลฯเป็นต้น อย่างเป็นระบบแล้วค่อยใข้ทฤษฎีความน่าจะเป็นหาคำตอบครับ
__________________
ประสบการณ์จะให้ประโยชน์อย่างเงียบๆ เมื่อเราสำนึกถึงข้อมูลในอดีต
ตอบพร้อมอ้างอิงข้อความนี้