问题陈述
您将获得一个多层矩阵形式的机架,其中包含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);
}
}
}
我需要帮助找到残留的细菌。
答案 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