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

Pythonで1と2の配列を合計が等しい2つの部分に分割できるかどうかを確認します


1と2のみを格納する配列numsがあるとします。各部分の要素の合計が同じになるように、配列を2つの異なる部分に分割できるかどうかを確認する必要があります。

したがって、入力がnums =[1、1、2、2、2]のようである場合、この配列を[1、1、2]と[2、2]の合計のように分割できるため、出力はTrueになります。各部分は4です。

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

  • 合計:=0、one_count:=0
  • total:=numsのすべての要素の合計
  • one_count:=numsの1の数
  • 合計が偶数の場合、
    • Falseを返す
  • (合計/ 2)の整数部分が偶数の場合、
    • Trueを返す
  • one_count> 0の場合、
    • Trueを返す
  • それ以外の場合、
    • Falseを返す

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

def solve(nums):
   total = 0
   one_count = 0
   total = sum(nums)
   one_count = nums.count(1)
   if total % 2:
      return False
   if (total // 2) % 2 == 0:
      return True
   if one_count > 0:
      return True
   else:
      return False
nums = [1, 1, 2, 2, 2]
print(solve(nums))
を返す

入力

[1, 1, 2, 2, 2]

出力

True

  1. Pythonで配列を等しい合計のサブ配列に分割できる合計を見つけます

    整数Aの配列があるとします。値sum[i]の場合、配列をsum sum [i]のサブ配列に分割できるように、sumのすべての値を見つける必要があります。配列を等しい合計のサブ配列に分割できない場合は、-1を返します。 したがって、入力がA =[2、4、2、2、2、4、2、6]のような場合、配列は次のサブ配列に分割できるため、出力は[6,8,12]になります。合計6、8、および12。これらは次のとおりです。[{2、4}、{2、2、2}、{4、2}、{6}] [{2、4、2}、{2、2 、4}、{2、6}] [{2、4、2、2、2}、{4、2、6 これを解決するには、次の手順に従います-

  2. Pythonで合計が等しい3つの部分に配列を分割する

    整数の配列Aがあるとすると、合計が等しい3つの空でない部分に配列を分割できる場合にのみ、出力はtrueになります。 正式には、(A [0] + A [1] + ... +A[i]がA[i+ 1] + A[と同じであるインデックスi+1