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

C++を使用して軸の片側に残りのポイントを取得するために削除するポイントの最小数。


問題の説明

デカルト平面でN点が与えられます。私たちのタスクは、任意の軸の片側に残りのポイントを取得するために削除する必要があるポイントの最小数を見つけることです。

与えられた入力が{(10、5)、(-2、-5)、(13、8)、(-14、7)}の場合、(-2、-5)を削除すると、残りのすべてのポイントはXより上になります。 -軸。

したがって、答えは1です。

アルゴリズム

1. Finds the number of points on all sides of the X-axis and Y-axis
2. Return minimum from both of them

#include <iostream>
#include <algorithm>
#define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
using namespace std;
struct point{
   int x, y;
};
int minPointsToBeRemoved(point arr[], int n){
   int a = 0, b = 0, c = 0, d = 0;
   for (int i = 0; i < n; i++){
      if (arr[i].x >= 0)
         b++;
      else if (arr[i].x <= 0)
         a++;
      if (arr[i].y <= 0)
         d++;
      else if (arr[i].y >= 0)
         c++;
   }
   return min({a, d, c, b});
}
int main(){
   point arr[] = {{10, 5}, {-2, -5}, {13, 8}, {-14, 7}};
   cout << "Minimum points to be removed = " <<
   minPointsToBeRemoved(arr, SIZE(arr)) << endl;
   return 0;
}

出力

上記のプログラムをコンパイルして実行する場合。次の出力を生成します-

Minimum points to be removed = 1

  1. C++を使用して1つの文字列を別の文字列に変換するための削除と挿入の最小数。

    説明 それぞれサイズmとnの2つの文字列str1とstr2が与えられます。タスクは、str1から/に最小数の文字を削除して挿入し、str2に変換することです。 Str1 = “tutorialspoint” Str2 = “tutorials” To transform str1 to str2 we have to delete five characters i.e. “point” from str1. アルゴリズム 1. Find longest common subsequence of str1 and st

  2. C ++を使用して、数の因数の最小合計を求めます。

    ここでは、与えられた数の因子の最小合計を取得する方法を見ていきます。数が12であると仮定します。これはさまざまな方法で因数分解できます- 12 =12 * 1(12 + 1 =13) 12 =2 * 6(2 + 6 =8) 12 =3 * 4(3 + 4 =7) 12 =2 * 2 * 3(2 + 2 + 3 =7) 最小の合計は7です。数値を取り、最小の因子の合計を見つけようとします。最小の因数分解の合計を取得するには、可能な限り数を因数分解する必要があります。言い換えれば、素因数を足して合計Sを求めようとすると、その合計は最小化されると言えます。 例 #include<