我知道这里还有很多其他迷宫求解器。虽然我想有自己的方法,但我认为我的问题与其他人有点不同。
到目前为止,这就是我已经开始的事情,希望我能实现我现在的想法。
private static int getPossiblePaths(File f) throws IOException {
int counts = 0; // hope to return all possible paths
// read input file then put it on list string
List<String> lines = Files.lines(f.toPath()).collect(Collectors.toList());
// get the row and column (dimensions)
String[] dimensions = lines.get(0).split(",");
//initalize sub matrix of the maze dimensions and ignoring the top and bottom walls
int[][] mat = new int[Integer.valueOf(dimensions[0]) - 2 ][Integer.valueOf(dimensions[1]) - 2];
//for each line in the maze excluding the boundaries (top and bottom)
for( int i = 2 ; i < lines.size() - 1 ; i++) {
String currLine = lines.get(i);
int j = 0;
for(char c : currLine.toCharArray()) {
mat[i-2][j] = (c=='*' ? 'w' : c=='A' ? 'a' : c=='B' ? 'b' : 's');
// some conditional statements here
}
}
// or maybe some conditional statements here outside of the loop
return counts;
}
文本文件中的迷宫看起来像这样。请注意,A 可以在任何地方并且与 B 相同。唯一允许的移动是向右和向下。
5,5
*****
*A *
* *
* B*
*****
上述迷宫的预期输出是 6(从 A 到 B 的可能路径)。
编辑:文本文件中的迷宫也可能是这样的:
8,5
********
* A *
* B*
* *
********
因此,使用我当前的代码,它获取尺寸(第一行)并删除迷宫的顶部和底部部分(边界)。所以目前mat数组中只存储了 3 行字符。以及文本文件中每个字符的一些编码(#=w(wall), A=a(start), B=b(end), else s(space))
我想在 foreach 内部有一些条件语句,以便可能将每个字符存储在 ArrayList 中。尽管我不确定这种方法是否会让我的生活变得更加困难。
如果你们有任何建议、技巧、建议或其他更简单的方法,我们将不胜感激!谢谢
蝴蝶刀刀
繁华开满天机
相关分类