我需要帮助编写一个程序来计算可以由满足属性的字母网格组成的分区数量:
输入是尺寸为N x N的网格。我在第一行给出N.
**Example:**
***
*Input:*
4
ABBC
BBBC
AABB
ABBC
***
*Output*
2
****
在这个例子中,第一行“4”告诉我们接下来会有一个4x4网格输入。输出 2 由可以满足上述属性的子网格的数量确定。 在此示例中,两个子网格是:
ABB
BBB
AAB
ABB
***
and
***
BC
BC
BB
BC
***
请注意,两个子网格只包含两个不同的字符。
在第一个子网格中,我们只能向上/向下/向左/向右移动所有'B'字符。有两个'A'区域。因此,属性得到满足
在第二个子网格中,我们可以横切所有'B'字符。我们无法横穿所有'C'字符。因此,属性得到满足。
由于有两个子网格,输出 2 。
我的想法
我开始阅读尺寸并在网格中循环。这是我现在的代码:
import java.io.*;
import java.util.*;
public class partition {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int dimensions = scan.nextInt();
for (int i = 0 ; i < dimensions; i++) {
for (int j = 0 ; j < dimensions; j++ ) {
}
}
}
}
我认为将所有字符读入数组可能是一种很好的方法,但我不确定如何从那里开始。有人可以给我一些建议吗?我相信提出一个有效的算法将是最困难的部分。