九宫格问题

来源:互联网 发布:最好的交友软件 编辑:程序博客网 时间:2024/05/19 04:06
九宫格问题  n维矩阵,矩阵中数字为0~n^2之间的数,且纵向、横向、斜向上的三个数字之和相等。请输入要计算的九宫格的维数:517 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 Merzirac法:(1)第一行居中的方格内(row,col)放1,右上方(row-1,col+1)依次填入2,3,4......(2)若所放的格超过顶行,那么把它放在底行(底,col+1)(3)若所放的格超过最右列,那么把它放在最左列(row-1,0)(4)若右上方已有数字,则向下移一格(row,col-1)

java代码:

import java.util.Scanner;public class Jiugongge {    public static void main(String[] args) {        System.out.println("请输入要计算的九宫格的维数:");        Scanner s=new Scanner(System.in);        int x=s.nextInt();        int row=0;        int col= x / 2;        int[][] a=new int[x][x];        //Merzirac法解九宫格        for(int i=1;i<= x * x;i++){            a[row][col]=i;            row--;            col++;            if(row < 0 && col >= x){                row++;                col--;                row++;            }            else if(row < 0){                row = x-1;            }            else if(col >= x){                col = 0;            }            else if(a[row][col] > 0){                row++;                col--;                row++;            }        }        for(int j=0 ;j < x;j++){            for(int k=0;k < x;k++){                System.out.print(a[j][k] + " ");            }            System.out.println();        }    }}
0 0
原创粉丝点击