我使用這兩個簡單的循環來從高處到底部,從右到左搜索網格。通過網格循環
for(int y=0; y<height; y++){
for(int x=width; x>=0; x--){
}
}
基本上,我想通過網格橫向搜索像下面的圖片中的數字,直到它覆蓋所有單元格。我的方法工作不好,所以我在這裏尋求幫助。
我怎樣才能做到這一點以最快的方式?我相信這應該可以做到只使用兩個循環,但我無法弄清楚。
我使用這兩個簡單的循環來從高處到底部,從右到左搜索網格。通過網格循環
for(int y=0; y<height; y++){
for(int x=width; x>=0; x--){
}
}
基本上,我想通過網格橫向搜索像下面的圖片中的數字,直到它覆蓋所有單元格。我的方法工作不好,所以我在這裏尋求幫助。
我怎樣才能做到這一點以最快的方式?我相信這應該可以做到只使用兩個循環,但我無法弄清楚。
下面將做到這一點:
final int h = 4;
final int w = 3;
for (int d = 0; d < w + h; d++) {
for (int y = 0; y < h; y++) {
int x = w - d + y;
if (x < 0 || x >= w) continue;
System.out.printf("%d %d\n", x, y);
}
}
這裏,h
是高度和w
是網格的寬度。
該算法基於觀察結果,即對於每個對角線,到上邊緣和右邊緣的距離總和保持不變。
外層循環遍歷對角線;內部循環,覆蓋對角線上的所有單元格。
輝煌!計算對角線的數量,並通過每個對角線循環。 +1 – ArjunShankar
非常好的解決方案!謝謝! –
什麼沒有解決?電網如何建立?是否有空單元格?如果是這樣,你想只找到連接的細胞? – Thomas
我只想從右上角到左下角循環網格。 –