C ++で最初に増加し、次に減少する配列内の最大要素を見つけます
最初に増加してから減少する配列が1つあるとします。配列内の最大値を見つける必要があります。したがって、配列要素がA =[8、10、20、80、100、250、450、100、3、2、1]のような場合、出力は500になります。
これを解決するために二分探索を使用することができます。 3つの条件があります-
- midが隣接する両方の要素よりも大きい場合、midが最大になります
- midが次の要素よりも大きいが、前の要素よりも小さい場合、maxはmidの左側にあります。
- mid要素が次の要素よりも小さいが、前の要素よりも大きい場合、maxはmidの右側にあります。
例
#include<iostream> using namespace std; int getMaxElement(int array[], int left, int right) { if (left == right) return array[left]; if ((right == left + 1) && array[left] >= array[right]) return array[left]; if ((right == left + 1) && array[left] < array[right]) return array[right]; int mid = (left + right)/2; if ( array[mid] > array[mid + 1] && array[mid] > array[mid - 1]) return array[mid]; if (array[mid] > array[mid + 1] && array[mid] < array[mid - 1]) return getMaxElement(array, left, mid-1); else return getMaxElement(array, mid + 1, right); } int main() { int array[] = {8, 10, 20, 80, 100, 250, 450, 100, 3, 2, 1}; int n = sizeof(array)/sizeof(array[0]); cout << "The maximum element is: " << getMaxElement(array, 0, n-1); }
出力
The maximum element is: 450
-
C++でab=cdを満たす配列内のすべてのペア(a、b)と(c、d)を検索します
配列Aがあるとすると、その配列から、ab =cdとなるように2つのペア(a、b)と(c、d)を選択する必要があります。配列A=[3、4、7、1、2、9、8]とします。出力ペアは(4、2)と(1、8)です。これを解決するには、次の手順に従います- i:=0からn-1の場合、do for j:=i + 1 to n-1、do get product =arr [i] * arr [j] 製品がハッシュテーブルに存在しない場合、Hash [product]:=(i、j) 製品がハッシュテーブルに存在する場合は、前の要素と現在の要素を出力します。 例 #include <
-
数値の配列の積の最初の桁を見つけるC++プログラム
この記事では、指定された配列の要素の積の最初の桁を見つけるプログラムについて説明します。 たとえば、配列が与えられたとしましょう。 arr = {12, 5, 16} その場合、これらの要素の積は12 * 5 * 16 =960になります。したがって、結果、つまりこの場合の積の最初の桁は9になります。 例 #include <bits/stdc++.h> using namespace std; int calc_1digit(int arr[], int x) { long long int prod = 1; for(in