魔术矩阵
2015-06-06 00:00
267 查看
摘要: 魔术矩阵:每行所有数值的总和、每列所有数值的总和、斜着所有数值的总和都相等
效果如下:
规律:
定义一个N*N的二维数组(其中N必须是奇数),将1~N*N的数值存入二维数组中,
并按矩阵形式打印出来。使之每行所有数值的总和、每列所有数值的总和、斜着所有数值的总和都相等。
1. 1总是填在第一行的最中间。
2. 如果当前数字是N的倍数,下一个数直接填在当前数的下方。
3. 下一个数总是填在它的右上角。如果发生了越界,就转头。
效果如下:
规律:
定义一个N*N的二维数组(其中N必须是奇数),将1~N*N的数值存入二维数组中,
并按矩阵形式打印出来。使之每行所有数值的总和、每列所有数值的总和、斜着所有数值的总和都相等。
1. 1总是填在第一行的最中间。
2. 如果当前数字是N的倍数,下一个数直接填在当前数的下方。
3. 下一个数总是填在它的右上角。如果发生了越界,就转头。
public class 魔术矩阵 { public static void main(String[] args) { int SIZE = 5; int[][] arr = new int[SIZE][SIZE]; // 动态初始化,同时指定所有的维数。 // i从1循环到SIZE * SIZE for(int row = 0 , col = SIZE / 2 , i = 1 ; i <= SIZE * SIZE ; i++) { arr[row][col] = i; if(i % SIZE == 0) // 如果i是SIZE的倍数,下一个数填在当前位置的下方。 { row++; } else if(row == 0) // 行号即将越界,所以要转头 { row = SIZE - 1; // 因为Java第一行是0 col++; } else if(col == SIZE - 1) // 列号即将越界,所以要转头 { col = 0; row--; } else { col++; // 列号加一,代表向右 row--; // 行号减一,代表向上 } & 3ff0 nbsp;} //循环打印 for(int i = 0 ; i < SIZE ; i++) { for(int j = 0 ; j < SIZE ; j++) { System.out.print(arr[i][j] + "\t"); } System.out.println() ;// 控制换行 } } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统