Bu sorunu çözmek için bir algoritma gerekir [kapalı]

4 Cevap java

İşte kısıtlamaları vardır

  • Ben üç kova (su) 10 litre kapasiteleri, 2 litre ve 50 litre var.
  • I 0 100 litre suyun bir kova verilecektir
  • Ben ilk 2 sonraki ve 50 son sipariş 10 kova doldurmak zorunda. Ekstra bir şey bertaraf edilebilir.

En iyi nasıl bu kod az hatları ile neler yapılabilir? loop yaparken? fikirler lütfen.

4 Cevap

10 litrelik bir kova doldurmak her zaman, size kaynak kova 10 litre daha az olacaktır.

Eğer 2 litrelik bir kova doldurmak her zaman, size kaynak kova 2 lt daha az olacaktır.

50 litrelik bir kova doldurmak her zaman, size kaynak kova 50 litre daha az olacaktır.

Bunu genelleştirmek miyiz?

Eğer N litrelik bir kova doldurmak her zaman, size kaynak kova N lt daha az olacaktır.

Sen kaynak kovadaki az sıfır litre var, bu yüzden ne aslında doldururuz hedef kovanın kapasitesi ne kaynak kova içinde ne daha az ve bir olamaz.

Size dolu miktarda bulunuyor yana,

Eğer N litrelik bir kova doldurmak her zaman, size kaynak kova dakika (N, source_bucket_capacity) lt daha az olacaktır.

Eğer kaynak kova su var iken, kova doldurma tutmak. Kaynak kova boş veya daha fazla hedef kovaları olduğunda durdurun.

Bu yüzden

  • Kaynak kova kurmak.
  • Hedef kovalar bir listesini kurmak.
  • while the source bucket is not empty and you have unfilled buckets in the destination list
    • sonraki hedef kova olsun.
    • En az doldurun (N, source_bucket_capacity)
    • dakika (N, source_bucket_capacity) tarafından kaynak kova eksiltme

Ben alamadım, Neden sadece kova doldurmak değil? Eğer daha iyi sorunu açıklayabilir misiniz? Eğer varsa ben, sınırlamalar açıklayınız, sınırlama görmüyorum ...

Sınırlama yoksa sadece stephan202 cevap kullanabilirsiniz

Eğer keyfi kapasitelerde kovalar keyfi bir sayı bu sorunu genelleme yapmak istemiyorsanız, o zaman hiç bir döngü gerekmez:

Kova a = 10, b = 2, c = 50, d = 100, sırasıyla Ad. B, d a çıkarma d 0'dan büyük ise d ve d, c. Hepsi bu.

<?php echo (($i = rand(1,100) - 62) > 0) ? $i : 0; ?>

Bu, diğer üç bölüm (62) toplam kapasitesi dökülür zaman rastgele 1-100 litre ile dolu bir kova içinde bırakılır ne kadar litre Yukarıdaki kod çıkışı.

Diğerleri zaten belirttiğimiz gibi, sizin soru sorulmaktadır şekilde çözmeye çalıştığınız gerçek sorun hakkında biraz ortaya koymaktadır. Ben yukarıdaki çözüm sunmak gerekiyordu ne olduğunu şüpheliyim. Eğer sadece kısa çözüm istedi ancak bu yana, iyi, bu. Tek satır.