我正在使用地形表示围栏,其中1是围栏土地,0是空地。这是一张地图,例如:
0110
1111
1111
1101
代码是如何工作的,它扫描1的角落和边,并计算你需要多少米的围栏,其中1的每一边都是2.5米。 j变量就像x值,i是y值。我有侧面和角落的工作代码,我唯一需要帮助的是如何设置一个for循环的中心栅栏。这是我的工作代码:
.wrapper {
position: relative;
}
.overlay{
position: absolute;
width: 100%;
height: 100%;
}
.form-wrapper {
text-align: center
}
我不确定我是否会使用for循环扫描核心,但我想它会像侧循环一样。任何人都知道代码会是什么样的?
答案 0 :(得分:0)
因此,给定一个零和一的矩阵,您需要计算可以找到的从一到零(上下,左右)的过渡数。每一个都会产生2.5米长的围栏。边界计为零。
你有很多复制粘贴的if语句来检查这个。我建议使用以下重写,它使用方法来避免复制粘贴代码。
/**
* returns the number of zero-or-border neighbors for a 1
* in a 2D array of ints that can be either 1 or 0
*/
public static int bordersFor(int[][] map, int row, int col) {
int borders = 0;
// left
if (col == 0 || map[row][col-1] == 0) borders ++;
// right
if (col == map[0].length-1 || map[row][col+1] == 0) borders ++;
// up
if (row == 0 || map[row-1][col] == 0) borders ++;
// down
if (row == map.length-1 || map[row+1][col] == 0) borders ++;
return borders;
}
public static int bordersFor(int[][] map) {
int borders = 0;
for (int row=0; row<map.length; row++) {
for (int col=0; col<map[0].length; col++) {
if (map[row][col] == 1) borders += bordersFor(map, row, col);
}
}
return borders;
}
public static void main(String ... args) {
int[][] map = {
{ 0, 1, 1, 0 },
{ 1, 1, 1, 1 },
{ 1, 1, 1, 1 },
{ 1, 1, 0, 1 }
};
System.out.println(bordersFor(map));
}