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

C#を使用して行ごとおよび列ごとに増加した行列を検索するにはどうすればよいですか?


この問題の根本的な解決策は、入力行列に格納されているすべての要素をスキャンして、指定されたキーを検索することです。行列のサイズがMxNの場合、この線形探索アプローチにはO(MN)時間がかかります。

行列は、並べ替えられた1次元配列として表示できます。入力行列のすべての行が上から下の順序で連結されている場合、ソートされた1次元配列を形成します。そして、その場合、二分探索アルゴリズムはこの2D配列に適しています。以下のコードは、2次元配列と検索キーを入力として受け取り、見つかった検索キーの成功または失敗に応じてtrueまたはfalseを返す関数SearchRowwiseColumnWiseMatrixを開発します。

public class Matrix{
   public bool SearchRowwiseColumnWiseMatrix(int[,] mat, int searchElement){
      int col = getMatrixColSize(mat);
      int start = 0;
      int last = mat.Length - 1;
      while (start <= last){
         int mid = start + (last - start) / 2;
         int mid_element = mat[mid / col, mid % col];
         if (searchElement == mid_element){
            return true;
         }
         else if (searchElement < mid_element){
            last = mid - 1;
         }
         else{
            start = mid + 1;
         }
      }
      return false;
   }
   private int getMatrixRowSize(int[,] mat){
      return mat.GetLength(0);
   }
   private int getMatrixColSize(int[,] mat){
      return mat.GetLength(1);
   }
}
static void Main(string[] args){
   Matrix m = new Matrix();
   int[,] mat = new int[3, 4] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
   Console.WriteLine(m.SearchRowwiseColumnWiseMatrix(mat, 11));
}

出力

TRUE

  1. Googleを使用して画像のソースと詳細を見つける方法

    グーグルは、太陽の下であらゆる主題についての情報を見つける必要があるときはいつでも人気のあるオプションです。さらに、検索エンジンの巨人を使用して、これまでにオンラインで公開された写真を探すこともできます。しかし、すでに写真を持っているが、そのソースについての詳細情報が必要な場合はどうでしょうか。幸い、Googleは画像検索をリバースエンジニアリングして、画像が最初に公開された日時と場所、画像の内容、その他のオンラインで見つかった詳細を見つける方法を提供しています。 画像のソースを見つける 1.Google画像検索ページに移動します。 2.検索バーの右端にあるカメラアイコンをクリックします。

  2. MicrosoftExcelで行と列をフリーズする方法

    より大きなExcelスプレッドシートで作業している多くのユーザーは、特定のデータを何度も何度もチェックして比較します。データは、スプレッドシートのタイプに応じて行または列になります。これにより、ユーザーの作業が少し難しくなり、時間がかかる可能性があります。ただし、フリーズ機能を使用すると、この問題の解決に役立てることができます。 Excelのフリーズ機能を使用すると、ユーザーはスプレッドシートの行または列をフリーズできます。行または列をフリーズすると、下にスクロールすると常に表示されます。 この記事では、Excelで行と列を簡単にフリーズできる方法について説明します。この記事に含まれている