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

PythonでサイズNのリング内の任意の整数点からAとBまでの距離の最小合計を求めます


1からNまでの数個の数字で構成されるリングがあるとします。また、2つの数字AとBもあります。これで、任意の場所(たとえばx)に立つことができます。距離の合計に対してカウント操作を実行します(たとえば、Z =XからAまでの距離+XからBまでの距離)。 Zが最小になるようにXを選択する必要があります。最後にZの値を返します。XはAおよびBと同じではないことに注意する必要があります。

したがって、入力がN =30、A =10、B =20の場合、X =15を選択すると、出力は10になります。XからAまでの距離は5で、 XからBは5です。したがって、合計距離=5 + 5=10です。

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

  • a> bがゼロ以外の場合、

    • aとbを交換する

  • clock_wise_dist:=b-a

  • counter_clock_wise_dist:=(a --1)+(n --b + 1)

  • minimum_dist:=clock_wise_dist、counter_clock_wise_distの最小値

  • minimum_distが1と同じ場合、

    • 3を返す

  • minimum_distを返す

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

def get_min_z(n, a, b):
   if (a > b):
      a, b = b, a
   clock_wise_dist = b - a
   counter_clock_wise_dist = (a - 1) + (n - b + 1)
   minimum_dist = min(clock_wise_dist, counter_clock_wise_dist)
   if (minimum_dist == 1):
      return 3
   return minimum_dist
n = 30
a = 10
b = 20
print(get_min_z(n, a, b))

入力

30, 10, 20

出力

10

  1. Pythonプログラムで配列の合計を見つける

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列の合計を計算するために必要な配列が与えられます。 合計を取得するために各インデックスで配列と要素全体をトラバースするブルートフォースアプローチについては、以下で説明します。合計を取得するための各インデックスについては、以下で説明します。 例 # sum function def sum_(arr,n):    # using built-in function    return(sum(arr)) # main arr = [11,22,33,44,55,66

  2. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '