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

C++のNxM行列のすべての行に存在する配列の要素の数


整数型の要素の配列と、指定された行と列のサイズの行列または2次元配列が与えられます。タスクは、行列の各行に存在する配列の要素の数を計算することです。

入力

int arr = { 2, 4, 6} and int matrix[row][col] = { { 2, 4, 6 }, {3, 4, 6}, {6, 2, 1}}

出力

Elements of array in row 1 are: 3
Elements of array in row 2 are: 2
Elements of array in row 3 are: 2

説明

we are having array containing 2, 4 and 6 as elements and now we will check the occurrences of 3 elements in every row of matrix by matching the elements of an array with the elements of a matrix, like, 2, 4 and 6 all are present in first row of matrix so the count of elements for row 1 is 3, similarly, count of elements for row 2 is 2 as only 4 and 6 are there and count of elements for row 3 is 2 as only 2 and 6 are there.

入力

int arr = { 1, 3} and int matrix[row][col] = { { 1, 4, 6 }, {3, 1, 6}, {6, 2, 4}}

出力

Elements of array in row 1 are: 1
Elements of array in row 2 are: 2
Elements of array in row 3 are: 0

説明

we are having array containing 1 and 3 as elements and now we will check the occurrences of 2 elements in every row of matrix by matching the elements of an array with theelements of a matrix, like, only 1 is present in first row of matrix so the count of elements for row 1 is 1, similarly, count of elements for row 2 is 2 as 1 and 3 both are there and count of elements for row 3 is 0 as none of 1 and 3 are there.

以下のプログラムで使用されているアプローチは次のとおりです

与えられた問題を解決するための複数のアプローチ、すなわちナイーブなアプローチと効率的なアプローチがあります。それでは、最初にナイーブなアプローチを見てみましょう。 。

  • 整数要素の配列と行および列のサイズの行列を入力します

  • 配列のサイズを計算し、配列、行列、配列のサイズを関数に渡してさらに処理します

  • 一時変数countを取得して、行列行に存在する要素の数を格納します。

  • 0から行列の行サイズまでループFORを開始します

  • ループ内で、FORを0から配列のサイズまで開始します

  • arr [k]

    で温度を設定します
  • 0から行列の列サイズまで別のループFORを開始します

  • ループ内で、IF temp =matrix [i] [j]を確認してから、カウントを1ずつ増やします

  • すべての行の変更後に更新するには、カウントを0に設定します

  • すべての行を変更する前のカウントの値を出力します。

効率的なアプローチ

  • 整数要素の配列と行および列のサイズの行列を入力します

  • 配列のサイズを計算し、配列、行列、配列のサイズを関数に渡してさらに処理します

  • 0から行列の行サイズまでループFORを開始します

  • unordered_mapタイプの変数を作成します

  • 0から行列の列サイズまで別のループFORを開始します

  • matrix[i][j]を1として順序付けされていないマップを設定します

  • 一時変数countを取得して、行列行に存在する要素の数を格納します。

  • ループ内で、FORを0から配列のサイズまで開始します

  • IF um [arr [j]] ==1を確認してから、カウントを1ずつ増やします

  • すべての行を変更する前のカウントの値を出力します。

例(素朴なアプローチ)

#include<bits/stdc++.h>
using namespace std;
#define row 3
#define col 3
void arr_matrix(int matrix[row][col], int arr[], int size){
   int count = 0;
   //for matrix row
   for(int i=0; i<row; i++){
      //for array
      for(int k=0 ; k<size ; k++){
         int temp = arr[k];
         //for matrix col
         for(int j = 0; j<col; j++){
            if(temp == matrix[i][j]){
               count++;
            }
         }
      }
      cout<<"Elements of array in row "<< i + 1 <<" are: " << count << endl;
      count = 0;
   }
}
int main(){
   int matrix[row][col] = { { 2, 4, 6 }, {3, 4, 6}, {6, 2, 1}};
   int arr[] = { 2, 4, 6};
   int size = sizeof(arr) / sizeof(arr[0]);
   arr_matrix(matrix, arr, size);
}

出力

上記のコードを実行すると、次の出力が生成されます-

Elements of array in row 1 are: 3
Elements of array in row 2 are: 2
Elements of array in row 3 are: 2

例(効率的なアプローチ)

#include <bits/stdc++.h>
using namespace std;
#define row 3
#define col 3
void arr_matrix(int matrix[row][col], int arr[], int size){
   for (int i = 0; i < row; i++){
      unordered_map<int, int> um;
      for (int j = 0; j < col; j++){
         um[matrix[i][j]] = 1;
      }
      int count = 0;
      for (int j = 0; j < size; j++) {
         if (um[arr[j]])
            count++;
      }
      cout<<"Elements of array in row "<< i + 1 <<" are: " << count << endl;
   }
}
int main(){
   int matrix[row][col] = { { 2, 4, 6 }, {3, 4, 6}, {6, 2, 1}};
   int arr[] = { 2, 4, 6};
   int size = sizeof(arr) / sizeof(arr[0]);
   arr_matrix(matrix, arr, size);
}

出力

上記のコードを実行すると、次の出力が生成されます-

Elements of array in row 1 are: 3
Elements of array in row 2 are: 2
Elements of array in row 3 are: 2

  1. C++の配列に存在するキーKの確率

    サイズ「n」の配列で与えられ、タスクは、配列で利用可能な場合、与えられた要素kの確率を見つけることです。 配列内の要素の数に等しい「n」まで配列全体をトラバースし、指定された要素またはキー「k」を検索します。要素がその確率を計算するよりも配列に存在する場合は、0を出力します。 入力 arr[] = { 1, 2, 3, 4, 5, 6} K = 5 出力 probability of a key 5 in an array is :0.166 入力 arr[] = { 1,2,3,4,5,6,7 } K = 8 出力 probability of a key 5 in an

  2. 配列のすべての要素をC++で4で割り切れるようにするための最小手順

    問題の説明 サイズnの配列が与えられた場合、タスクは、配列のすべての要素を4で割り切れるのに必要な最小ステップ数を見つけることです。ステップは、配列から任意の2つの要素を削除し、これらの要素の合計を加算することとして定義されます。アレイへ 例 入力配列が{1、2、0、2、4、3}の場合、3つの操作が必要です- 1 + 3 = 4 2 + 2 = 4 0 + 4 = 4 アルゴリズム 1. Sum of all the elements of the array should be divisible by If not, this task is not possible 2. Initi