神奇的幻方(洛谷P2615题题解,Java语言描述)

题目要求

P2615题目链接
在这里插入图片描述
在这里插入图片描述

分析

注意题目说的是,幻方的N必定是奇数(实测确实不能是偶数),那就不需要检测了。

实际模拟,就是一个地图,按指定的要求移动就行。
这种题,看着吓人,但是其实严格按照说编写代码就行了,并不需要自己设计什么算法。

AC代码(Java语言描述)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        scanner.close();
        int[][] array = new int[num][num];
        int last_x = 0, last_y = num/2;
        //肯定是奇数
        array[0][last_y] = 1;
        for (int i = 2; i <= num*num; i++) {
            if (last_x == 0 && last_y != num-1) {
                last_x = num-1;
                ++last_y;
            } else if (last_x != 0 && last_y == num-1) {
                --last_x;
                last_y = 0;
            } else if (last_x == 0 && last_y == num-1) {
                ++last_x;
            } else if (array[last_x-1][last_y+1] == 0) {
                --last_x;
                ++last_y;
            } else {
                ++last_x;
            }
            array[last_x][last_y] = i;
        }
        StringBuilder result;
        for (int i = 0; i < num; i++) {
            result = new StringBuilder();
            for (int j = 0; j < num; j++) {
                result.append(array[i][j]).append(" ");
            }
            System.out.println(result.toString().trim());
        }
    }
}
发布了717 篇原创文章 · 获赞 1513 · 访问量 69万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104853121