C++で指定された式の値を最大化します
問題の説明
ゼロ以外の3つの整数a、b、cが与えられます。タスクは、加算と乗算の記号を任意の順序でそれらの間に配置することにより、可能な最大値を見つけることです。
整数の再配置は許可されていますが、加算と乗算の符号は1回使用する必要があることに注意してください。
a =1、b =3、c =5の場合、最大値は次のように20になります-
(1 + 3) * 5 = 20
アルゴリズム
1. If all numbers are positive, then add two small numbers and multiply result with larger one 2. If only two numbers are positive, then multiply 2 positive numbers and add remaining number 3. If only one number is positive, then multiply 2 negative number and add remaining number 4. If all numbers are negative, then add two largest integers and multiply then with remaining number
例
#include <bits/stdc++.h> using namespace std; int getMaximumResult(int a, int b, int c){ int negativeCnt = 0; int sum = a + b + c; int mul = a * b * c; int largest = max(a, max(b, c)); int smallest = min(a, min(b, c)); if (a < 0) { ++negativeCnt; } if (b < 0) { ++negativeCnt; } if (c < 0) { ++negativeCnt; } if (negativeCnt == 0) { return (sum - largest) * largest; } else if (negativeCnt == 1) { return (mul / smallest) + smallest; } else if (negativeCnt == 2) { return (mul / largest) + largest; } else if (negativeCnt == 3) { return (sum - smallest) * smallest; } } int main(){ int a = 1, b = 3, c = 5; cout << "Maximum value = " << getMaximumResult(a, b, c) << endl; return 0; }
出力
上記のプログラムをコンパイルして実行する場合。次の出力を生成します-
Maximum value = 20
-
C++のグリッドで指定された方向に可能な移動をカウントします
サイズnxmのグリッドと開始点x、yを表す2つの変数nとmです。 また、移動((1,1)、(2,2))などとしてグリッド内を移動するために実行できるステップ/移動のペアも指定されます。移動の各ペアは、x、y軸で実行されるステップの単位を表します。目標は、境界[1、n] X [1、m]内のグリッド内をトラバースするために実行できる合計ステップを見つけることです。nが5、mが4、現在の位置が2、2で、選択されたステップが( 1、-1)次に、このステップを1回実行すると、(3,1)になります。このステップを再度実行すると、(4、-1)になります。これは、-1が範囲外であるため無効です。 例
-
C++で指定された違いを持つペアを見つけます
配列Aがあるとすると、n個の異なる要素があります。 xとyの差が与えられた差dと同じになるように、配列Aからペア(x、y)を見つける必要があります。要素のリストがA=[10、15、26、30、40、70]のようで、差が30の場合、ペアは(10、40)と(30、70)になります この問題を解決するために、配列がソートされていると仮定し、左から2つのポインターをポイント要素に取ります。最初は、最初の1つの「i」が最初の要素を指し、2番目の「j」がポイント要素を指します。 2番目の要素。 A [j] – A [i]がnと同じ場合、ペアを出力します。A[j] – A [i]