我已经为此编写了代码,但是没有用。如果它成功了,运行时复杂度将会非常高。
for (int collumnInput=0; collumnInput < 3; collumnInput++)
{
for (int rowInput = 0; rowInput < 3; rowInput++)
{
try
{
puzzleArray[collumnInput][rowInput] = scan.nextInt();
if ((puzzleArray[collumnInput][rowInput] > 8) || (puzzleArray[collumnInput][rowInput] < 0))
{
System.out.println("Invalid 8-puzzle entered!");
System.exit(0);
}
for (int collumnCheck = 0; collumnCheck < collumnInput; collumnCheck++)//code to check for duplicates starts here.
{
for (int rowCheck = 0; rowCheck < rowInput; rowCheck++)
{
if (puzzleArray[collumnCheck][rowCheck]==puzzleArray[collumnInput][rowInput])
{
System.out.println("Invalid 8-puzzle entered!");
System.exit(0);
}
}
}
}
catch (java.util.InputMismatchException exception)
{
System.out.println("Invalid 8-puzzle entered!");
System.exit(0);
}
}
}
scan.close();
首先,这里的代码运行,但没有检测到数组中的重复项,那么我该如何解决呢?第二件事是,有没有一种资源效率更高的方法来做到这一点?我见过人们使用克隆和复制方法,但我不知道这些方法实际上是否更节省资源。谢谢。