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

制約を満たす点を見つけるためのC++コード


2つのポイントa=(x1、y1)とb =(x2、y2)が与えられたとします。 2点間のマンハッタン距離はdist(a、b)=|x1-x2|です。 + |y1-y2|。点aの座標が(0、0)で、点bの座標が(x、y)の場合、dist(a、c)=dist(a、b)/ 2およびdist( b、c)=dist(a、b)/2。そのようなポイントが利用できない場合は、-1、-1を出力します。

したがって、入力がx =13、y =7の場合、出力は6、4になります。

ステップ

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

if x mod 2 is same as 0 and y mod 2 is same as 0, then:
   print( x / 2, y / 2)
otherwise when (x + y) mod 2 is same as 1, then:
   print(- 1, - 1)
Otherwise,
   print(x / 2, (y + 1) / 2)

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

#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int x, int y) {
   if(x % 2 == 0 && y % 2 == 0)
      cout<< x / 2 <<' '<< y / 2 <<endl;
   else if((x + y) % 2 == 1)
      cout<< -1 <<' '<< -1 <<endl;
   else
      cout<< x / 2 <<' '<< (y + 1) / 2 << endl;
}
int main() {
   int x = 13, y = 7 ;
   solve(x, y);
   return 0;
}

入力

13, 7

出力

6 4

  1. マンハッタン距離の合計がC++で最小になるような点を見つけます

    K次元空間にn個の異なる点があり、nの値が範囲(2、105)にあり、kの値が範囲(1〜5)にあるとします。結果の点からn点までのマンハッタン距離の合計が最小になるように点を決定する必要があります。 2点P1(x1、y1)とP2(x2、y2)の間のマンハッタン距離は| x1 –x2|です。 + | y1 –y2|。次元が3で、(1、1、1)、(2、2、2)、(3、3、3)のような3つのポイントがあるとすると、出力は(2、2、2)になります。 この問題を解決するには、すべてのK次元の点を並べ替え、各k次元の中央の要素から出力を取得する必要があります。 例 #include<iostrea

  2. 特定の点をカバーする最適な長方形を見つけるためのC++プログラム

    この記事では、特定のポイントをカバーする最適な長方形を見つけるプログラムについて説明します。 この問題では、点の座標(x、y)と長さ/幅の比率=l / b(たとえば)が与えられます。与えられた点を含み、その寸法が与えられた比率に従う長方形の座標を見つける必要があります。複数の長方形が存在する場合は、ユークリッドの中心と指定された点の間の距離が最も短い長方形を選択する必要があります。 これを解決するには、まず比率l/bを最小化します。その後、min(n / l、m / b)値が(n、m)領域(2次元スペースを許可)にとどまることがわかります。まず、(x、y)が長方形の中心のみであると仮定しま