gpt4 book ai didi

java - 以特定形状显示数字

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:44 25 4
gpt4 key购买 nike

我 15 分钟前才想到这个问题,尽管它看起来非常简单,但我在想出答案时遇到了一个严重的问题。

基本上我想做的是根据用户给的数字(n),我想画一个正方形。

示例:假设用户输入数字 2,结果应为:

12
43

现在,假设用户给出数字 3,结果应该是:

123
894
765

等..

请不要给我这个问题的解决方案,我只是想要一两条线索让我继续前进。

我考虑过使用一个简单的 java 类来实现它,但我仍在努力克服第一个条件:

public class DrawSquareWithNumbers {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);
System.out.println("Enter your number: ");
int number = scanner.nextInt();

for (int i = 0; i <= number; i++) {
if (i<number)
System.out.print(i);
if (i>=number) {
System.out.println("\n"+i);
}
}

}
}

有什么建议吗?提前致谢。

最佳答案

所以我认为我在这方面投入了太多时间,但这是一个有趣的挑战,所以我想让我们试一试吧。

我为这个解决方案实现了一个代码版本,虽然它可能不是最干净的,但它工作得很好,因为我向后处理了整个问题。

这是我在线试用的解决方案(请注意,它严重未优化,而且绝不是好的 Java 代码。老实说,这是一个快速而肮脏的实现):

https://ideone.com/97JB7Y

所以这个想法很简单:我们首先计算矩阵中每个位置的正确值,然后打印出该矩阵。

让我们更详细地讨论一下:

我们首先为要打印的值创建矩阵:

给定大小 n 这是

int[][] values = new int[n][n];

现在我们要计算每个点的正确值。我选择以“错误的方式”解决它,不是从第一点开始,而是从螺旋的中心开始。

基本上想象一下这个矩阵 n = 3:

[1][2][3]
[8][9][4]
[7][6][5]

我不是从 1 开始,而是从 9 开始。这样做的原因是,计算从一个点螺旋出去的位置比螺旋进入一个点更容易。

所以从这个中心点开始,我们以圆形方式从那里螺旋出去。对于矩阵

[1][2]
[4][3]

这意味着我们访问 4 -> 3 -> 2 -> 1。然后将正确的值保存在矩阵中。

我的方法唯一的问题是,对于大小不均匀的矩阵(3、5、7 等),我仍然以螺旋顺序访问这些点,对于 3x3,访问顺序是例如9 -> 4 -> 3 -> 2 -> 1 -> 8 -> 7 -> 6 -> 5,正如我完全在 Paint 中绘制的这张完美图片所示:

Order of Evaluation

这导致结果矩阵被反转:​​

[5][6][7]
[4][9][8]
[3][2][1]

这个小问题很容易解决,只需再次打印出反转矩阵 n%2 != 0

希望我能以不同的方法解决问题。

关于java - 以特定形状显示数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50601616/

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