谁能用JAVA帮我写个"九宫图"

来源:百度知道 编辑:UC知道 时间:2024/09/21 20:54:06
不光是九宫,5*5,7*7等等都要
都知道吧?就是横看竖看斜看 加起来的和都是相等的

//写在前面: 看了下一楼的程序
//很好的回避了行列同时出界时的一个问题
//因为按他的写法此时会取到左下角,而左下角的值+行数最大数-1=右上角的值
//也就是说 右上角有值的时候左下角肯定也有值了
//还发现一个特点 就是左上角=右上角+2 左下角=右下角+2 四个角按Z字反写
//法递增

public class Test8 {
public static void main(String[] args) {
int num=7; //任意一个奇数
int[][] array=new int[num][num];
int m=0;
int n=num/2;
array[m][n]=1;
for(int i=2;i<=num*num;i++){
m--;
n++;
//行出界 列出界
if(m<0&&n>num-1){
m=m+2;
n--;
array[m][n]=i;
continue;
}
//行出界 列未出界
if(m<0&&n<=num-1){
m=num-1;
array[m][n]=i;
continue;
}
//行未出界 列出界
if(m>=0&&n>num-1){
n=0;
array[m][n]=i;
continue;
}
//行列未出界 且此位置未被占用
if(array[m][n]==0){
array[m][n]=i;
}
//行列未出界 且此位置被占用
else{
m=m+2;
n--;
array[m][n]=i;