gpt4 book ai didi

java - 嵌套 For 循环模式

转载 作者:行者123 更新时间:2023-12-01 18:34:45 26 4
gpt4 key购买 nike

我一直在努力解决 Java 中的这种 for 循环模式(两侧都有空格)

   0
000
00000
0000000
00000
000
0

这就是我一直在做的事情:

for (int i = 1; i <= 5; i++) {
for (int s = 5; s > i; s--) {
System.out.print(" ");
}
for (int j = 1; j < i; j++) {
System.out.print("0");
}
for (int j = 1; j < i; j++) {
System.out.print("0");
}
System.out.println("");
}
for (int i = 1; i <= 5; i++) {
for (int s = 1; s < i; s++) {
System.out.print(" ");
}
for (int j = 5; j > i; j--) {
System.out.print("0");
}
for (int j = 5; j > i; j--) {
System.out.print("0");
}
System.out.println("");
}

正如你可能会说的那样,我已经能够弄清楚如何在每行中使用奇数个 0 来打印此模式,但我一生都无法弄清楚如何使用奇数个 0 来打印此模式数字。谢谢。

最佳答案

有时,稍微参数化问题会有所帮助;然后你可以把它写在纸上,看看是否有任何模式。例如,在您想要的输出中:

   0
000
00000
0000000
00000
000
0

首先,让我们选择一种方便的方式来描述行。假设一行is空格后跟 z零,整个模式可以是 rows行长。现在写出来。当rows是 7:

i s z
0 3 1
1 2 3
2 1 5
3 0 7
4 1 5
5 2 3
6 3 1

如果 rows 怎么样?比如说,5:

i s z
0 2 1
1 1 3
2 0 5
3 1 3
4 2 1

偶数呢?我们必须选择我们想要的外观,怎么样:

  00
0000
000000
000000
0000
00

所以,当 rows是 6:

i s z
0 2 2
1 1 4
2 0 6
3 0 6
4 1 4
5 2 2

好的,现在让我们寻找模式! z很简单:我们可以从数字和视觉上看到zs 的函数和rows :

z = rows - (2 * s);

也就是说,我们知道总宽度等于高度(行),并且我们知道零前后有相同数量的空格。

所以现在归结为弄清楚 s来自irows 。好吧,经过一番绞尽脑汁和实验后,我们可以看到,当i < rows / 2时:

s = (rows - 1) / 2 - i;

i >= rows / 2 :

s = i - rows / 2;

现在,所有这些都结合在一起,例如:

void diamond (int rows) {
for (int i = 0; i < rows; ++ i) {
int s;
if (i < rows / 2)
s = (rows - 1) / 2 - i;
else
s = i - rows / 2;
int z = rows - (2 * s);
// print s spaces, then z zeroes, then a newline
}
}

我将保留打印任务s空格和z零作为读者的练习。

对于此类问题,这是一种相当通用的问题解决技术:

  1. 参数化。
  2. 写下来。
  3. 寻找规律。

第 1 步是最重要的一步,因为它定义了一种将看似复杂的任务(绘制钻石)转换为简单得多的问题的方法(将 s 确定为 irows 的函数) .

关于java - 嵌套 For 循环模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22523999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com