Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,906

HOME > PHP > PHP Forum > ❤ช่วยแก้โจทย์นี้หน่อยครับ❤โจทย์ : เขียนโปรแกรมโดยหาผลรวม Array $value ให้ได้มากกว่าหรือเท่ากับ 17 จำนวน 2 ชุด โดยไม่ซ้ำกันและใช้สมาชิกให้น้อยที่สุดเรียงลำดับจากบนลงล่าง❤



 

❤ช่วยแก้โจทย์นี้หน่อยครับ❤โจทย์ : เขียนโปรแกรมโดยหาผลรวม Array $value ให้ได้มากกว่าหรือเท่ากับ 17 จำนวน 2 ชุด โดยไม่ซ้ำกันและใช้สมาชิกให้น้อยที่สุดเรียงลำดับจากบนลงล่าง❤

 



Topic : 133197



โพสกระทู้ ( 6 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



$queue = array();
$queue[0] = 5
$queue[1] = 6
$queue[2] = 3
$queue[3] = 1
$queue[4] = 7
$queue[5] = 9
$queue[6] = 4
$queue[7] = 10
$queue[8] = 8
$queue[9] = 2

$minQueueSum = 17
$group = 2

โจทย์ : เขียนโปรแกรมโดยหาผลรวม Array $queue ให้ได้มากกว่าหรือเท่ากับ 17 จำนวน 2 ชุด โดยไม่ซ้ำกันและใช้สมาชิกให้น้อยที่สุดเรียงลำดับจากบนลงล่าง

ผลลัพธ์ที่ได้จากการเขียนโปรแกรมนี้คือ
ขุดที่ 1
$queue[0]+$queue[5]+$queue[6] = 18
ขุดที่ 2
$queue[1]+$queue[2]+$queue[3]+$queue[4] = 17
ใช้สมาชิกของ Array $queue ไป 7 ตัว คือ $queue[0] ถึง $queue[6]

หมายเหตุ : ถ้าเอา $queue[4]+$queue[7] = 17 จะถือว่าต้องเปิดจองสมาชิกตั้งแต่ $queue[0] จนถึง $queue[7] แล้ว ซึ่งใช้สมาชิกมากถึง 8 สมาชิก สรุปคือพยายามใช้ให้ครบทุกสมาชิกใน 2 ชุด แต่ใช้จำนวนสมาชิกรวมทั้ง 2 ชุดให้น้อยที่สุด



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2019-02-25 08:49:08 By : charoenwit View : 277 Reply : 8
 

 

No. 1



โพสกระทู้ ( 74,014 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

โจทย์แบบนี้คิดเองก่อนนะครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-26 16:39:56 By : mr.win
 


 

No. 2



โพสกระทู้ ( 6 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

จริงๆผมลองเขียนโปรแกรมคร่าวๆแล้ว น่าจะทำได้ แต่ยังไม่ดีพอเพราะยิ่งใช้สมาชิกของ Array ยิ่งเยอะยิ่งคำนวณนานมากขึ้น เพราะผมใช้วิธีสลับตำแหน่ง Array เก็บไว้ก่อน เช่น 5 สมาชิก
01234
01243
01324
.
10234
10243
10324
.
.

แล้วค่อยบวกตามนี้ให้ได้ 2 ชุด ถ้าไม่ถึงก็ไปบรรทัดถัดไป เช่น
01234 ก็เป็น
$queue[0]+$queue[1]+$queue[2]+$queue[3]+$queue[4] = 22
ได้แค่ 1 ชุด
12340 ก็เป็น
$queue[1]+$queue[2]+$queue[3]+$queue[4] = 17
ได้ 1 ชุด เหลือ $queue[0] = 5 ยังไม่พอสำหรับอีก 1 ชุด

ถ้าไล่ครบทุกบรรทัดแล้วยังไม่ได้ 2 ชุด ก็เพิ่มอีก 1 สมาชิกของ Array $queue ไปเรื่อยๆ ซึ่งเปลืองโหลดมาก เพราะมันเป็น Factorial เลย (Factorial สัญลักษณ์คือ "!")เช่น
5 สมาชิกของ Array $queue จะได้ 5! บรรทัด = 5x4x3x2x1 บรรรทัด = 120 บรรทัด แต่ถ้า 10 สมาชิก = 3,628,800 บรรทัดเลยทีเดียว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-27 08:42:27 By : charoenwit
 

 

No. 3



โพสกระทู้ ( 7,977 )
บทความ ( 2 )



สถานะออฟไลน์


มันถูกบังคับด้วยลำดับการบวกจากบนลงล่าง และข้อมูลไม่เรียงลำดับกัน
ไม่สามารถสร้างสูตรในการค้นหาได้
ก็ต้องบวกต้องหาไปที่ละตัวนั่นแหล่ะครับ
ไม่ต้องคิดมาก ไม่มีวิธีอื่นครับทำให้จบๆไป

ถ้าข้อมูลมันจัดเรียงกันได้ ก็ยังพอสร้างสูตร จัดเรียงข้อมูลแล้วไล่จากมากไปน้อย
10+7
9+8
6+5+4+2

อะไรประมาณนี้ได้
แต่เมื่อบังคับจากบนลงล่างก็ไม่มีหนทางอื่นครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-27 09:06:12 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 6 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 3 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-02-27 09:06:12
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้.......


แสดงว่าสิ่งที่คิดไว้ถูกต้องแล้วสินะครับ ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-27 09:42:51 By : charoenwit
 


 

No. 5



โพสกระทู้ ( 6 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 3 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-02-27 09:06:12
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้.......


ผมพบวิธีแก้โจทย์ได้โดยไม่กินทรัพยากรมากเท่ากับแบบวิธีแรกได้แล้วครับ

วิธีแบบคร่าวๆ
1. บวก queue[$i] ไปเรื่อยๆ ถ้า >= 17 แล้วหยุด เก็บเข้า $myGroup[0]
2. เอา queue[$x] ที่บวกแล้วเกิน ให้เอาออกจาก $myGroup[0] แล้วไปเพิ่มใน $myGroup[1] แทน
3. วนกลับไปข้อ 1 จนกว่าจะครบ 2 group
4. ดูทุก $myGroup ว่ามีค่าน้อยกว่า ผลรวม$myGroup[1] หรือไม่ (ซึ่งก็เจอ ผลรวม$myGroup[0] นั่นเองที่มีค่าน้อยกว่า ผลรวม$myGroup[1])
5. ถ้าเจอก็ให้ $r = Abs(ผลรวม$myGroup[1]-ผลรวม$myGroup[0])
ุ6. $s = Abs((ผลรวม$myGroup[1]-queue[$z])-(ผลรวม$myGroup[0]+queue[$z])) โดย ผลรวม$myGroup[1]-queue[$z] >= 17
7. $t = $r-$s
8. วนกลับไปข้อ 4 จนกว่าจะเจอ $t ที่มากที่สุด
9. เอา queue[$z] ที่ได้ไปลบออกจาก ผลรวม$myGroup[1] และไปบวกใน ผลรวม$myGroup[0]
10. วนกลับไปข้อ 4 จนกว่า $t<=0
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-06 09:06:27 By : charoenwit
 


 

No. 6



โพสกระทู้ ( 7,977 )
บทความ ( 2 )



สถานะออฟไลน์


จากความต้องการของโจทย์
ผลลัพธ์ที่ได้ เป็น

7+10
9+8
หรือเปล่าครับ


ประวัติการแก้ไข
2019-03-07 11:58:06
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-06 11:46:47 By : Chaidhanan
 


 

No. 7



โพสกระทู้ ( 6 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 6 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-03-06 11:46:47
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้.......


เปล่าครับ

วิธีที่ 1 เป็นวิธีที่ถูกต้องที่สุดแล้วครับ คิดว่าอย่างนั้น
วิธีที่ 2 เป็นวิธีที่ยังไม่ perfect 100% (ผมลองกับ $queue[] จำนวนมากกว่านี้และ $group ค่ามากกว่านี้) แต่กินทรัพยากรน้อยกว่าเยอะ

ผลลัพธ์วิธีที่ 2
ผลลัพธ์วิธีที่ 2
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-07 22:50:12 By : charoenwit
 


 

No. 8



โพสกระทู้ ( 6 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

วิธีที่ 2 ไม่ perfect ในที่นี้ คือมีสิทธิ์ใช้สมาชิกของ $queue ได้มากกว่า วิธีที่ 1
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-03-07 23:00:04 By : charoenwit
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ❤ช่วยแก้โจทย์นี้หน่อยครับ❤โจทย์ : เขียนโปรแกรมโดยหาผลรวม Array $value ให้ได้มากกว่าหรือเท่ากับ 17 จำนวน 2 ชุด โดยไม่ซ้ำกันและใช้สมาชิกให้น้อยที่สุดเรียงลำดับจากบนลงล่าง❤
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่