java 计算小费_java-以某些形状显示数字

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

我向该解决方案推荐了一个代码版本,尽管它可能不是最干净的,因为我向后处理整个问题,但它的效果很好.

这是我可以在线尝试的解决方案(请注意,它没有经过严格优化,并且绝不是好的Java代码.老实说,这是一种快速而肮脏的实现):

因此,想法很简单:我们首先为矩阵中的每个位置计算正确的值,然后将其打印出来.

让我们再详细一点:

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

给定大小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等)的矩阵,我仍然以螺旋顺序访问点,对于3×3,访问顺序例如9-> 4-> 3-> 2-> 1-> 8-> 7-> 6->如图5所示,我完全画在Paint中:

jkpRK.png

这导致结果矩阵如下:

[5][6][7]

[4][9][8]

[3][2][1]

尽管可以简单地解决此小问题,但是只要将矩阵n%2!= 0再次反转打印一次即可.

希望我可以提供其他解决方法的帮助.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值