Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでメモを交換できる最小時間を見つけます


n人のレジ係がお金を交換していると仮定します。現時点では、i番目のレジ係の前にki人の人数がいます。さて、i番目のレジ係の列にあるj番目の人はm [i、j]のメモを持っていました。どれだけ早くメモを交換できるかを見つけなければなりません。レジ係は1つのメモをスキャンするのに5秒かかったことを覚えておく必要があります。顧客のすべてのメモのスキャンが完了した後、顧客はメモを交換するのに15秒かかりました。

したがって、入力が入力のような場合:n =6、k =[12、12、12、12、12、12]

7 8 9 7 9 6 10 9 9 6 7 8
10 7 10 9 8 9 9 9 9 6 5 6
9 8 8 9 8 6 7 9 10 6 6 7
7 6 9 6 6 9 8 9 6 6 8 9
9 8 7 6 5 10 8 10 7 6 6 8
8 7 6 5 7 9 7 9 6 5 5 7

レジ係は各顧客のすべてのメモをスキャンするのに5秒かかるため、出力は585になります。したがって、5 * m [I、j]を追加します。これで、各レジ係はすべての顧客に対して15秒かかるので、答えに15 *k[]を追加します。各レジ係が費やした時間を計算した後にかかる最小時間が答えになります。したがって、レジ係のm[5]は最小時間585を要します。

これを解決するには、次の手順に従います-

  • n:=kのサイズ

  • 最小:=99999

  • 0からnの範囲のiの場合、実行

    • temp:=k [i] * 15

    • 0からk[i]の範囲のjの場合、実行

      • temp:=temp + m [i、j] * 5

    • temp

      • 最小:=temp

  • 最小値を返す

理解を深めるために、次の実装を見てみましょう-

def minTimeToExchange(k, m):
   n = len(k)
   minimum = 99999
   for i in range(n):
      temp = k[i] * 15
   for j in range(k[i]):
      temp += m[i][j] * 5
   if temp < minimum:
      minimum = temp
   return minimum

k = [12, 12, 12, 12, 12, 12]
m = [
   [7,8,9,7,9,6,10,9,9,6,7,8],
   [10,7,10,9,8,9,9,9,9,6,5,6],
   [9,8,8,9,8,6,7,9,10,6,6,7],
   [7,6,9,6,6,9,8,9,6,6,8,9],
   [9,8,7,6,5,10,8,10,7,6,6,8],
   [8,7,6,5,7,9,7,9,6,5,5,7]]
print(minTimeToExchange(k, m))

入力

[12, 12, 12, 12, 12, 12],
[[7,8,9,7,9,6,10,9,9,6,7,8],
[10,7,10,9,8,9,9,9,9,6,5,6],
[9,8,8,9,8,6,7,9,10,6,6,7],
[7,6,9,6,6,9,8,9,6,6,8,9],
[9,8,7,6,5,10,8,10,7,6,6,8],
[8,7,6,5,7,9,7,9,6,5,5,7]]

出力

585

  1. Pythonでマージした後も、最小数の色を見つけるプログラムが残っています

    色のリスト(R、G、B)があるとします。これで、2つの異なる色が隣り合っている場合、それらは3番目の色の単一の色のアイテムに変換できます。そのような変換の可能なシーケンスの後に残っているそれらの最小数を見つける必要があります。 したがって、入力がcolors =[G、 R、 G、 B、 R]の場合、以下のように変換できるため、出力は1になります- これを解決するには、次の手順に従います- n:=色のサイズ 色に異なる色が1つしかない場合は、 return n n <=1の場合、 return n x:=0 d:=キーと値のペアを持つマップ{( R、1)、(

  2. Pythonでサイズnxmの長方形の内側に配置できるサイズ2x1の長方形の数を見つけます

    2つの値nとmがあるとします。サイズnxmの長方形の内側に設定できるサイズ2x1の長方形の数を見つける必要があります。考慮しなければならない条件はほとんどありません- 2つの小さな長方形を重ねることはできません。 すべての小さな長方形は、大きな長方形の内側に完全にあります。大きい方の長方形の端に触れることは許可されています。 したがって、入力が次のような場合 n =3、m =3の場合、出力は4になります。 これを解決するには、次の手順に従います- n mod 2が0と同じ場合、 return(n / 2)* m それ以外の場合、m mod 2