【问题标题】:Looping through a grid在网格中循环
【发布时间】:2012-05-01 07:42:14
【问题描述】:

我使用这两个简单的循环从高到下,从右到左搜索网格。

for(int y=0; y<height; y++){
  for(int x=width; x>=0; x--){
  }
}

基本上,我想像下图中的数字那样横向搜索网格,直到它覆盖所有单元格。我的方法效果不佳,所以我在这里寻求帮助。

我怎样才能以最快的方式完成这项工作?我相信这应该可以只使用两个循环来完成,但我无法弄清楚。

【问题讨论】:

  • 什么没解决?网格是如何设置的?有空单元格吗?如果是这样,您是否只想找到连接的单元格?
  • 我只想从右上角到左下角遍历网格。

标签: java loops


【解决方案1】:

下面会做:

 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
  • 非常好的解决方案!谢谢!
猜你喜欢
  • 2021-11-26
  • 2020-08-01
  • 2020-07-03
  • 2023-03-20
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
相关资源
最近更新 更多