在宅ワークのリアルをベテランとビギナーにインタビュー>>

講義でわからないのですが、以下の問をPythonを用いて答えを求めるコードを書いてください。



 ここに700個の荷物があり、それぞれの重さは1kg、2kg、3kg、……、700kgとなっています。これらを最大積載量5000kgのトラックを何台か使って運ぼうとしています。

 トラックに荷物を載せるのに、次のような方針を立てました。

 重い荷物から順にトラックに載せていく。
 ある荷物を載せると最大積載量を超えてしまう場合は、新しいトラックを用意してそちらに載せる。古いほうのトラックには以降は新しい荷物は載せない。

 この方針に従うと、

 1台目のトラックには700kg,699kg,698kg,697kg,696kg,695kg,694kgの荷物が載せられる。
 2台目のトラックには693kg,692kg,691kg,690kg,689kg,688kg,687kgの荷物が載せられる。

となります。最終的に何台のトラックが必要になるかを求めてください。

  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (4件)

こんな簡単なロジックを人に頼んでたら


講義受けてる意味ないかな。

ここまで考えたけど、この先解らん

とか書かないと、回答者に対する敬意が無いと
みなされて、運営に消されてしまうよ。
    • good
    • 1

う〜ん、ゴメン。

バグ入れちゃってたや。

# ここから

def foo(m, n):
 lst = []
 s = []
 for i in range(m, 0, -1):
  if sum(s) + i > n:
   lst += [s]
   s = []
  s += [i]
 return lst + [s]

if __name__ == '__main__':
 print(len(foo(700, 5000)))
「python: 最大積載量5000kgの」の回答画像3
    • good
    • 0

python使わなかったのでコードは略。


結果52台。
01台め 4879kg積 7個(700..694)
02台め 4830kg積 7個(693..687)
03台め 4781kg積 7個(686..680)
(snip)
50台め 4950kg積 36個(155..120)
51台め 4995kg積 54個(119..66)
52台め 2145kg積 65個(65..1)
Total=245350kg

ナップザック問題の変形で、DPで解けという問題かと思ったら違った。
    • good
    • 0

#!/usr/bin/env python3



def foo(m, n):
 lst = []
 s = 0
 for i in range(m, 0, -1):
  s += i
  if s > n:
   lst += [s - i]
   s = i
 return len(lst)

if __name__ == '__main__':
 print(foo(700, 5000))
「python: 最大積載量5000kgの」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング