【发布时间】:2014-12-09 01:40:13
【问题描述】:
现在我正在使用递归回溯,我的任务是在迷宫中找到最长的路径,质量表示为被坐标覆盖的场,并且墙壁的坐标在文件中很痛。 我制作了一个解析器来解析输入文件并构建墙壁,但我也将此坐标存储在对象类型 Coordinate 的数组中,以检查是否可以将下一条“蛇”移动到下一个字段,然后我创建了这个方法,现在我明白了,当我使用回溯时,我需要一个方法来从数组中删除最后一个坐标,我该怎么做?目标是不使用数组列表或链表只有数组! 谢谢!
public class Coordinate {
int xCoord;
int yCoord;
Coordinate(int x,int y) {
this.xCoord=x;
this.yCoord=y;
}
public int getX() {
return this.xCoord;
}
public int getY() {
return this.yCoord;
}
public String toString() {
return this.xCoord + "," + this.yCoord;
}
}
还有
public class Row {
static final int MAX_NUMBER_OF_COORD=1000;
Coordinate[] coordArray;
int numberOfElements;
Row(){
coordArray = new Coordinate[MAX_NUMBER_OF_COORD];
numberOfElements=0;
}
void add(Coordinate toAdd) {
coordArray[numberOfElements]=toAdd;
numberOfElements +=1;
}
boolean ifPossible(Coordinate c1){
for(int i=0;i<numberOfElements;i++){
if(coordArray[i].xCoord==c1.xCoord && coordArray[i].yCoord==c1.yCoord){
return false;
}
}
return true;
}
}
【问题讨论】:
-
arrays必须使用吗?您可以使用像ArrayList这样的对象变体或其他有用的方法。 -
是的,这是强制性的,我知道使用它们很愚蠢,但这是强制性的!
-
使用一个足够长的数组,同时保留一个int变量,size,它包含了数组中有效元素的数量。
标签: java arrays recursion backtracking