เอามั่ง คำถามชวนคิด คิดนอกกรอบ

เชิญมาพักผ่อน คลายร้อนนั่งเล่น คุยกันเย็นๆ พร้อมเรื่องกีฬา สัพเพเหระ ทัศนะนานา ชีวิตชีวา สุขภาพทั่วไป บันเทิงขำขัน รอบเรื่องเมืองไทย ชวนเที่ยวที่ไหน อยากไปก็นัดมา ...โย่วๆ
ตอบกลับโพส
jaychou

โพสต์ โดย jaychou » พฤหัสฯ. ธ.ค. 14, 2006 9:27 am

เอ...ดูเหมือนโจทย์สำหรับเขียนโปรแกรม

น้ำหนัก 1 กก. ถึง N กก.ค้นหาคำตอบว่า ใช้น้ำหนัก M ก้อน จะชั่งได้ตั้งแต่ 1 กก. ถึง X กก. ได้อย่างไร

เลือกตุ้มน้ำหนัก N(1..4) จาก 1 ถึง N

for weight = 1 to X
....for i = 1 to 4
........Slot(i) = N(1) หรือ 0
........Sign = +1 หรือ -1
โดยที่ Sum(Sign*Slot) = weight



jaychou

โพสต์ โดย jaychou » พฤหัสฯ. ธ.ค. 14, 2006 3:38 pm


maxkg = 40
numw = 30
factor =[1,0,-1]

result = range(1,maxkg+1)
TEST = range(1,maxkg+1)

w1 =1
for w2 in range(w1+1,numw+1):
   for w3 in range(w2+1,numw+1):
       for w4 in range(w3+1,numw+1):
           check=0
           result=range(1,maxkg+1)                
           for weight in TEST:
               for f1 in factor:
                   for f2 in factor:
                       for f3 in factor:
                           for f4 in factor:
                               total =  w1*f1 + w2*f2 + w3*f3 +w4*f4
                               if total <> weight:
                                   check=1
                               else:
                                   result[weight-1]=0;

           sum = 0
           for s in result:
               sum+=s;
           if sum == 0:
               print
               print 'weight set is ',w1,w2,w3,w4
               print '---------------------------------------'

               for weight in TEST:
                   for f1 in factor:
                       for f2 in factor:
                           for f3 in factor:
                               for f4 in factor:
                                   total =  w1*f1 + w2*f2 + w3*f3 +w4*f4
                                   if total <> weight:
                                       check=1
                                   else:
                                       print weight,' = ', w1*f1,w2*f2,w3*f3,w4*f4


ยากกว่าเดิมน่าดูเลย



ตอบกลับโพส