天天看點

三馬分石問題

現在共有100匹馬跟100塊石頭,馬分3種,大型馬;中型馬跟小型馬。其中一匹大馬一次可以馱3塊石頭,中型馬可以馱2塊,而小型馬2頭可以馱一塊石頭。問三種馬有多少種配置設定方案可以剛好用100匹馬馱100塊石頭

Python代碼如下:

# -*- coding: utf-8 -*-

"""

Created on Tue Jun  9 19:15:34 2020

@author: yang

"""

#現共有100匹馬跟100塊石頭,馬分三種,大型馬,中型馬,小型馬。

#其中一批大型馬一次可以駝3塊石頭,中型馬2塊,小型馬2頭可以駝一塊

#問需要多少匹大型馬、中型馬、小型馬(必須用完100匹馬)?

#數學模型:大型馬A,中型馬B,小型馬C

#大型馬駝運x,中型馬y,小型馬z

#輸入:馱運能力

x = 3

y = 2

z = 0.5

#資源總數

Horse = 100

Stone = 100

A = 0

B = 0

C = 0

#

i = 0

j = 0

k = 0

#輸出

for i in range(0,int(Horse/x)):

    #if (A<100) and (A + B + C < 100) :

    A = i

        #print(A,B,C)

    if (A + B + C == Horse) and (A*x + B*y + C*z ==Stone) :

       print(A,B,C)

       break

    else:        

        for j in range(0,Horse-i):

            #print(A,B,C)

            #if (B<100)  and (A + B + C < 100) and (A*x + B*y + C*z)<100:

            B = j

            if (A + B + C == Horse) and (A*x + B*y + C*z ==Stone) :

                print(A,B,C)

                break

            else:               

                for k in range(0,Horse-i-j):

                    #if (C<100) and (A + B + C < 100) and (A*x + B*y + C*z)<100:

                    C = k

                    #print(A,B,C,i,j,k)

                    if (A + B + C == Horse) and (A*x + B*y + C*z ==Stone) :

                        print(A,B,C)

                        break

  運作結果:

三馬分石問題

繼續閱讀