我正面临着一个我的大脑无法处理的问题!我需要做一个循环来创建像这样的模式:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1因此,内部数字越大,但我就是不明白如何创建这样的循环我的AI需要这个,这样我就可以为实体创建感兴趣的区域,所以这不是学校的作业,我到目前为止已经尝试过了
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
System.out.print("?");
}
System.out.println();
}我真的想不出一种方法来获得代表它在哪个级别上的数字!我一直在尝试将它可视化到自己身上,等等,以弄清楚如何创建它或创建它的最佳方式。请帮助我和我的大脑远离头痛!:)我想要的是简单的伪代码或任何易于理解的语言的代码(如java、c++、c……)
发布于 2011-11-26 21:56:12
你可以这样做:
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
// The distance to the left, right, top and bottom border:
int dl = j;
int dr = cols - (j+1);
int dt = i;
int db = rows - (i+1);
// The distance to the closest border:
int d = Math.min(Math.min(dl, dr), Math.min(dt, db));
// Print according number
System.out.print(d+1);
}
System.out.println();
}发布于 2011-11-26 21:56:46
您需要的数字是水平或垂直方向到边的最小距离。在伪代码中:
min(i, j , n - 1 - j, n - 1 - i) + 1发布于 2011-11-26 21:56:40
让你的"?“be 1+ i,j,(-i-1)行和(cols-1)-j的最小值。
https://stackoverflow.com/questions/8278806
复制相似问题