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

C++のマトリックスでソートされたすべての行をカウントします


このチュートリアルでは、行列内のすべてのソートされた行の数を見つけるプログラムについて説明します。

このために、m*n行列が提供されます。私たちのタスクは、昇順または降順で並べ替えられた、指定されたマトリックス内のすべての行をカウントすることです。

#include <bits/stdc++.h>
#define MAX 100
using namespace std;
//counting sorted rows
int count_srows(int mat[][MAX], int r, int c){
   int result = 0;
   for (int i=0; i<r; i++){
      int j;
      for (j=0; j<c-1; j++)
      if (mat[i][j+1] <= mat[i][j])
         break;
      if (j == c-1)
         result++;
   }
   for (int i=0; i<r; i++){
      int j;
      for (j=c-1; j>0; j--)
         if (mat[i][j-1] <= mat[i][j])
            break;
      if (c > 1 && j == 0)
         result++;
   }
   return result;
}
   int main(){
   int m = 4, n = 5;
   int mat[][MAX] = {{1, 2, 3, 4, 5}, {  4, 3, 1, 2, 6}, {8, 7, 6, 5, 4}, {5, 7, 8, 9, 10}};
   cout << count_srows(mat, m, n);
   return 0;
}

出力

3

  1. すべての順列をC++で並べ替えられた(辞書式)順序で出力します

    この問題では、長さnの文字列が与えられ、文字列の文字のすべての順列をソートされた順序で出力する必要があります。 問題を理解するために例を見てみましょう: 入力: 「XYZ」 出力: XYZ、XZY、YXZ、YZX、ZXY、ZYX。 ここでは、すべての順列を辞書式順序(アルファベット順)で印刷する必要があります。 この問題を解決するには、最初に配列をアルファベット順に並べ替える必要があります。並べ替えられた配列は、順列の最初の要素です。次に、文字列の次に高い順序の順列を生成します。 以下のコードは、解決策をより明確にします: 例 #include<iostream> #i

  2. C++で特定の行ごとにソートされた行列のすべての行で共通の要素を検索します

    各行がソートされている行列があるとします。各行の共通要素を見つける関数を作成する必要があります。マトリックスが次のようになっていると仮定します- 結果は5になります。 これを解決するために、ハッシュベースのアプローチを使用します。このアプローチは、行がソートされていない場合にも使用できます。これを行うには、いくつかの手順に従う必要があります- 2つの1の個別の要素としてすべてのキーを含む1つのハッシュテーブルを作成します。すべての値は0になります 行列の各要素をループします。ハッシュテーブルに数値が存在する場合は、カウントを1増やします。最後に、行列の行番号と同じカウントの値があ