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

C#を使用して特定のマトリックス内の島の数を印刷するにはどうすればよいですか?


2Dグリッドマップを線形スキャンします。ノードに「1」が含まれている場合、深さ優先探索をトリガーするのはルートノードです。 DFS中は、訪問したすべてのノードを「0」に設定して、訪問したノードとしてマークする必要があります。 DFSをトリガーするルートノードの数を数えます。あるルートで始まる各DFSがアイランドを識別するため、この数はアイランドの数になります。

using System;
namespace ConsoleApplication{
   public class Matrix{
      public int PrintNumberOfIslands(char[,] grid){
         bool[,] visited = new bool[grid.GetLength(0), grid.GetLength(1)];
         int res = 0;
         for (int i = 0; i < grid.GetLength(0); i++){
            for (int j = 0; j < grid.GetLength(1); j++){
               if (grid[i, j] == '1' && !visited[i, j]){
                  DFS(grid, visited, i, j);
                  res++;
               }
            }
         }
         return res;
      }
      public void DFS(char[,] grid, bool[,] visited, int i, int j){
         if (i < 0 || i >= grid.GetLength(0)) return;
         if (j < 0 || j >= grid.GetLength(1)) return;
         if (grid[i, j] != '1' || visited[i, j]) return;
         visited[i, j] = true;
         DFS(grid, visited, i + 1, j);
         DFS(grid, visited, i - 1, j);
         DFS(grid, visited, i, j + 1);
         DFS(grid, visited, i, j - 1);
      }
   }
   class Program{
      static void Main(string[] args){
         Matrix m = new Matrix();
         char[,] mm = { { '1', '1', '1', '1', '0' }, { '1', '1', '0', '1', '0' }, { '1', '1', '0', '0', '0' }, { '0', '0', '0', '0', '1' } };
         Console.WriteLine(m.PrintNumberOfIslands(mm));
      }
   }
}

出力

2

  1. JavaScriptで特定の番号を検証する方法は?

    指定された数値を検証するには、isNan()関数を使用します。値が数値でないかどうかをチェックします。 trueが返される場合は、値が数値ではないことを意味します。 例 次のコードはfalseを返します。これは、値が数値であることを意味します- <!DOCTYPE html> <html>    <body>    <button onclick="display()">Check</button>    <p id="test"

  2. JavaScriptを使用してページを印刷するにはどうすればよいですか?

    JavaScriptでページを印刷するには、print()メソッドを使用します。標準のダイアログボックスが開き、印刷用に選択するプリンタなどの印刷オプションを簡単に設定できます。 ここに例があります- 例 次のコードを実行して、ページを印刷する方法を学ぶことができます- <!DOCTYPE html> <html>    <body>       <button onclick="display()">Click to Print</button> &n