c ++を使用して、左側の配列の合計が右側の配列の合計と等しくなるような配列内の要素を検索します。
配列Aがあり、n個の要素があるとします。私たちのタスクは、各サブアレイの合計が同じになるように、配列Aを2つのサブアレイに分割することです。配列A=[2、3、4、1、4、5]とすると、出力は1であるため、1の前と後のサブ配列が取得されます。 [2、3、4]、および[4、5]。
この問題を解決するために、right_sumの最初の要素を除く配列全体を計算します。それがパーティショニング要素であると考えてください。左から右にトラバースします。 right_sumから要素を減算し、left_sumに要素を追加すると、right_sum=left_sumの場合にポイントが取られます。
例
#include<iostream> using namespace std; int getPartitionElement(int arr[], int size) { int right = 0, left = 0; for (int i = 1; i < size; i++) right += arr[i]; for (int i = 0, j = 1; j < size; i++, j++) { right -= arr[j]; left += arr[i]; if (left == right) return arr[i + 1]; } return -1; } int main() { int arr[] = { 2, 3, 4, 1, 4, 5 }; int size = sizeof(arr) / sizeof(arr[0]); cout << "Partition element: " << getPartitionElement(arr, size); }
出力
Partition element: 1
-
xとその桁の合計がC++で指定されたnと等しくなるような数xを見つけます
ここで、1つの問題が発生します。ここで、数値nを取得する場合、x +桁の合計xが指定された数値nと同じになるように、xなどの別の値を見つける必要があります。 nの値が21であると仮定します。このプログラムは、15+桁の合計15、つまり15 + 1 + 5 =21=nとして数値x=15を返します。 この問題を解決するには、単純なアプローチに従う必要があります。 1からnまで繰り返し、各繰り返しで、数値とその桁の合計の合計が数値と同じであるかどうかを確認し、停止します。それ以外の場合は続行します。 例 #include<iostream> using namespace std; i
-
各配列要素のモジュラスが同じになるように「k」を見つけるC++プログラム
この記事では、特定の配列の各要素での係数が同じになるように、整数「k」を見つけるプログラムについて説明します。 たとえば、配列が与えられたとしましょう。 arr = {12, 22, 32} 次に、k =1、2、5、10の出力値があります。 y)の2つの値の場合を考えてみましょう。次に、(y + Difference)%k =y%kになります。これを解決すると、 difference%k = 0 したがって、配列内の最大要素と最小要素の差に対するすべての除数を見つけてから、配列内のすべての要素の余りが同じかどうかを各除数で確認します。 例 #include<bits/stdc++