Lee のアルゴリズムの実装をより効率的にしようとしていますが、これまでのところ、3 乗ループを使用して 2D 整数配列内の隣接するセルをインクリメントしています。
for(int k = 1; k < g.length*2; ++k){
for(int i = x0-k; i < x1+k; ++i)
for(int j = y0-k; j < x1+k; ++j)
{
if(i > 0 && j > 0 && i < g.length-1 && j < g.length-1)
{
if(g[x1][y1] != 0)
return true;
if(g[i][j] == k && g[i+1][j] == 0){
g[i+1][j] = k + 1;
}
if(g[i][j] == k && g[i][j+1] == 0){
g[i][j+1] = k + 1;
}
if(g[i][j] == k && g[i-1][j] == 0){
g[i-1][j] = k + 1;
}
if(g[i][j] == k && g[i][j-1] == 0){
g[i][j-1] = k + 1;
}
}
}
}
ポイントが start(5,5) end(8,8) の 10x10 グリッドの出力:
00007670000
00076567000
00765456700
07654345600
76543234560
65432123456
76543234560
07654345600
00765456700
00076567000
00007670000
値をチェックしながらグリッドを埋めるより速い方法はありますか?