C++で合計がx未満であるソートされた配列のペアをカウントします
整数型要素のソートされた配列と整数変数xが与えられ、タスクは、与えられた配列からペアを形成し、ペアの要素の合計を計算し、計算された合計がx未満かどうかを確認することです。
入力 − int arr [] ={2、7、1、0、8}、int x =8
出力 −合計がx未満であるソートされた配列内のペアの数は− 4
説明 −指定された配列から形成できるペアは次のとおりです。(2、7)=9(xより大きい)、(2、1)=3(xより小さい)、(2、0)=2(xより小さい) )、(2、8)=10(xより大きい)、(7、1)=8(xに等しい)、(7、0)=7(xより小さい)、(7、8)=15(より大きいxよりも)、(1、0)=1(xよりも小さい)、(1、8)=8(xに等しい)、(0、8)=8(xに等しい)。したがって、合計がx未満のペアは、(4、0)と(2、2)です。したがって、合計がx未満のペアの数は4です。
入力 − int arr [] ={2、4、6、8}、int x =10
出力 −合計がx未満であるソートされた配列内のペアの数は− 2
説明 −指定された配列から形成できるペアは次のとおりです。(2、4)=6(x未満)、(2、6)=8(x未満)、(2、8)=10(xに等しい) )、(4、6)=10(xに等しい)、(4、8)=12(xより大きい)、(6、8)=14(xより大きい)。したがって、合計がx未満のペアの数は2です。
以下のプログラムで使用されているアプローチは次のとおりです
与えられた問題を解決するための複数のアプローチ、すなわちナイーブなアプローチと効率的なアプローチがあります。それでは、最初にナイーブなアプローチを見てみましょう。 。
-
整数要素の配列を入力し、配列のサイズを計算して、データを関数に渡します
-
一時変数カウントを宣言して、合計がx未満のペアのカウントを格納します。
-
配列のサイズまでiから0までのループFORを開始します
-
ループ内で、配列のサイズになるまで、jからi+1までの別のループFORを開始します
-
ループ内で、合計をarr [i] + arr [j]として計算し、IF合計
-
カウントを返す
-
結果を印刷します。
効率的なアプローチ
-
整数要素の配列を入力し、配列のサイズを計算して、データを関数に渡します
-
一時変数カウントを宣言して、合計がx未満のペアのカウントを格納します。
-
arr_0を0に設定し、arr_1をサイズ-1に設定します
-
arr_0からarr_1までのループFORを開始します
-
ループ内で、IF arr [arr_0] + arr [arr_1]
カウントを返す
結果を印刷します。
例(素朴なアプローチ)
#include <iostream> using namespace std; int pair_sum(int arr[], int size, int x){ int count = 0; int sum = 0; for(int i = 0 ;i <size ; i++){ for(int j = i+1; j<size; j++){ sum = arr[i] + arr[j]; if(sum < x){ count++; } } } return count; } int main(){ int arr[] = {2, 7, 1, 0, 8}; int size = sizeof(arr) / sizeof(arr[0]); int x = 8; cout<<"Count of pairs in a sorted array whose sum is less than x are: "<<pair_sum(arr, size, x); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
Count of pairs in a sorted array whose sum is less than x are: 4
例(効率的なアプローチ)
#include <iostream> using namespace std; int pair_sum(int arr[], int size, int x){ int arr_0 = 0; int arr_1 = size-1; int count = 0; while(arr_0 < arr_1){ if (arr[arr_0] + arr[arr_1] < x){ count = count + (arr_1 - arr_0); arr_0++; } else{ arr_1--; } } return count; } int main(){ int arr[] = {2, 7, 1, 0, 8}; int size = sizeof(arr) / sizeof(arr[0]); int x = 8; cout<<"Count of pairs in a sorted array whose sum is less than x are: "<<pair_sum(arr, size, x); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
Count of pairs in a sorted array whose sum is less than x are: 4
-
C++でソートされたバイナリ配列の1を数えます
このチュートリアルでは、ソートされたバイナリ配列で1を見つけるプログラムについて説明します。 このために、1と0のみを含む配列が提供されます。私たちのタスクは、配列に存在する1の数を数えることです。 例 #include <bits/stdc++.h> using namespace std; //returning the count of 1 int countOnes(bool arr[], int low, int high){ if (high >= low){ int mid = low + (
-
C ++のソートされた配列の絶対的な個別のカウント?
配列は、同じデータ型の要素のコレクションです。 ソートされた配列 は、昇順または降順の順序で要素が格納されている配列です。 明確な数は、同じではない要素の数です。 絶対個別カウントは、要素の絶対値、つまり符号のない要素(符号なしの値)の個別カウントです。 このプログラムでは、ソートされた配列で絶対的な個別のカウントを見つけます。つまり、配列の各要素の絶対値を考慮した場合、個別の値の数をカウントします。 たとえば、 Input : [-3 , 0 , 3 , 6 ] Output : 3 配列には3つの異なる絶対値があり、要素は0、3、および6です。 これを解決するために、さまざまな