神奇幻方

图片说明

import java.io.IOException;
import java.util.*;

public class Main {


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int arr[][] = new int[n][n];
        int x = 0,y = n / 2;
        arr[x][y] = 1;
        for (int k = 2; k <= n * n; k++) {
            if(x == 0 && y != n - 1){
                arr[n - 1][y + 1] = k;
                x = n - 1;
                y += 1;
            }else if(y == n - 1 && x != 0){
                arr[x-1][0] = k;
                x -= 1;
                y = 0;
            }else if(x == 0 && y == n - 1){
                arr[x+1][y] = k;
                x+=1;
            }else if(x != 0 && y != n - 1){
                if(arr[x - 1][y + 1] == 0){
                    arr[x - 1][y + 1] = k;
                    x -= 1;
                    y += 1;
                }else{
                    arr[x + 1][y] = k;
                    x += 1;
                }
            }
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.printf(arr[i][j]+ " ");
            }
            System.out.println();
        }

    }
}

看题目感觉是挺复杂的,但是参考了题解之后就很清晰明了了。首先题目就给出了1的位置,那么就以1的位置为基准,设置好x,y的值。根据题目的四个条件,设置好if语句。在这里要说明的就是,有时候题目就已经告诉了我们答案,然后以1的坐标为基准,慢慢的推理,无非就是把这4个条件用java语言翻译出来就可以了

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务