私はすでにこのコードを書いていますが、うまくいきませんでした。もしそれが機能していたら、ランタイムの複雑さは非常に高かったでしょう。
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();
まず第一に、ここのコードは実行されますが、配列内の重複を検出しないので、どうすれば修正できますか? 2 つ目は、これを行うためのよりリソース効率の良い方法はないかということです。人々がクローンとコピーの方法を使用しているのを見てきましたが、それらが実際にリソース効率が高いかどうかはわかりません。ありがとう。