找到矩阵中的其余元素

时间:2019-09-02 15:27:13

标签: java java.util.scanner codeblocks programmers-notepad

问题陈述

您将获得一个多层矩阵形式的机架,其中包含m行n列。每个细胞都被红色药丸(以r标记),蓝色药丸(以b标记)或细菌(以x标记)占据。红色药丸只能在水平,垂直和对角线方向杀死相邻的细菌(如果有),而蓝色药丸只能在水平和垂直方向上杀死相邻的细菌(如果有)。最初,药丸是不活跃的。一旦活跃,它们就可以作用于邻近的细菌。一旦药丸被激活,您需要找到架子上剩余细菌的数量。

m =行n =列,test =迭代次数

r =红色药丸,
x =细菌

条件是:

r =红色药丸可以沿水平,垂直和对角线方向杀死相邻的细菌。

我需要找到剩下的细菌。

我的(不完整)解决方案是- 我创建了一个2d数组(arr1)来接受字符串,然后将该数组元素转换为整数,即0和1(r = 0和x = 1)并存储在另一个2d数组(arr2)中。现在我只能计算出细菌总数,但是我想找到残留的细菌。

这是我的代码

    import java.util.Scanner; 
    import java.*;

   public class Pills  {
   public static void main(String args[])
  {
  // initialize here. 
   int row, col, i, j, k, test;  
  String  arr[][] = new String[10][10];
  int arr2[][] = new int[10][10];
 Scanner scan = new Scanner(System.in);
 System.out.println("Enter number of tests :");

 test = scan.nextInt();
 for(k=0;k<test;k++)
 {
  //enter row and column for array.
   System.out.println(" ");
   row = scan.nextInt(); 
   System.out.println(" "); 
   col = scan.nextInt(); 

   // enter array elements.
   System.out.println(" "); 
   for(i=0; i<row; i++)
    { 
    for(j=0; j<col; j++)
     {
      arr[i][j] = scan.next(); 
      if(arr[i][j].equals("r"))
      {
          arr2[i][j]=0;
      }
      else {
         arr2[i][j]=1;
              }
            }
         }    
        // the 2D array is here.
        System.out.print("\n"); 
        for(i=0; i<row; i++)        
       { 
        for(j=0; j<col; j++)   
         {
           System.out.print(arr[i][j]+ " ");
           }
           System.out.println();
           }
           System.out.print("\n"); 

            int sum = 0;
            for ( i=0; i < arr2.length; i++)
           {
            for (j=0; j < arr2[i].length; j++)
            {
            sum = sum + arr2[i][j];
             }
              }
              System.out.println("Total Germs : "+sum);    
                  }
                } 
              }

我需要帮助找到残留的细菌。

1 个答案:

答案 0 :(得分:-2)

public class Main
{
  public static void main (String[]args)
  {

    String[][]arr =
    {
      {
      "g", "g", "g", "g"},
      {
      "g", "r", "g", "g"},
      {
      "g", "g", "g", "g"},
      {
      "g", "g", "g", "g"}
    };

    int germCount = getGerms (arr);
    System.out.print (germCount);

  }

  public static int getGerms (String[][]arr)
  {
    int germCount = 0;
    int row = arr.length;
    int col = arr[0].length;

    for (int i = 0; i < row; i++)
      {
    for (int j = 0; j < col; j++)
      {
        if (arr[i][j].equals ("r") || arr[i][j].equals ("b"))
          {
        if (i + 1 < row && arr[i + 1][j].equals ("g"))
          {
            arr[i + 1][j] = "k";

          }
        if (i - 1 >= 0 && arr[i - 1][j].equals ("g"))
          {
            arr[i - 1][j] = "k";

          }
        if (j + 1 < col && arr[i][j + 1].equals ("g"))
          {
            arr[i][j + 1] = "k";

          }
        if (j - 1 >= 0 && arr[i][j - 1].equals ("g"))
          {
            arr[i][j - 1] = "k";

          }
          }


        if (arr[i][j].equals ("r"))
          {
        if (i + 1 < row && j + 1 < col
            && arr[i + 1][j + 1].equals ("g"))
          {
            arr[i + 1][j + 1] = "k";

          }
        if (i + 1 < row && j - 1 >= 0
            && arr[i + 1][j - 1].equals ("g"))
          {
            arr[i + 1][j - 1] = "k";

          }

        if (i - 1 >= 0 && j - 1 >= 0
            && arr[i - 1][j - 1].equals ("g"))
          {
            arr[i - 1][j - 1] = "k";

          }


        if (i - 1 >= 0 && j + 1 < col
            && arr[i - 1][j + 1].equals ("g"))
          {
            arr[i - 1][j + 1] = "k";

          }
          }

      }
      }

    for (int i = 0; i < row; i++)
      {
    for (int j = 0; j < col; j++)
      {
        System.out.print (arr[i][j]);
        if (arr[i][j].equals ("g"))
          germCount++;
      }
    System.out.println ();
      }

    return germCount;
  }
}

o / p-

kkkg
krkg
kkkg
gggg
7