砻谷踏碓 2021-07-08 17:05 采纳率: 100%
浏览 290
已采纳

脚趾踢到钢板,撞到硬题了,要求有点古怪,期待你进来

本以为很简单的算法题,幻想几分钟几行代码搞定,没想到几年都没搞定,踢到钢板了
各位神人果断出手,救题于千军万马中,招数任出
当然,能够不用条件句那就最好,能不借助数组就不借助数组,当然,不是说不可以

输入输出行数,得出下图数字阵列

img

  • 写回答

11条回答 默认 最新

  • blkq 2021-07-09 14:13
    关注

    来个java版:

    public class Test {
    
        public static int N = 10;
    
        public static int value(int px, int py, int di, int dj, int s, int n) {
            for (int i = 0; i < n; i++) {
                if (px == i + di && py == i + dj) {
                    return s + i + 1;
                }
                if (i != 0) {
                    if (px == i + di && py == 0 + dj) {
                        return s + 3 * n - 2 - i;
                    }
                    if (px == n - 1 + di && py == i + dj) {
                        return s + 2 * n - 1 - i;
                    }
                }
            }
    
            if (n > 3) {
                return value(px, py, 2 + di, 1 + dj, s + 3 * n - 3, n - 3);
            }
    
            throw new RuntimeException("something goes wrong.");
        }
    
        public static void main(String[] args) throws Exception {
            int width = Integer.toString((int) ((N * N - N) / 2 + N)).length();
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < N; j++) {
                    if (i >= j) {
                        System.out.print(String.format("%" + width + "s", value(i, j, 0, 0, 0, N)) + "\t");
                    }
                }
                System.out.println();
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

问题事件

  • 已采纳回答 7月13日
  • 修改了问题 7月9日
  • 修改了问题 7月8日
  • 修改了问题 7月8日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集