数据结构之幻方连续摆数法
来源:互联网 发布:工业大数据分析的步骤 编辑:程序博客网 时间:2024/04/30 06:40
(1)幻方概念:
n阶幻方是指自然数1---n的平方排列成n*n阶方阵,其各行各列及对角线上的数字之和相等,和数S=n(n的平方+1)/2。
(2)连续摆数法概念:
(3)代码实现
import java.util.Scanner;/** * @date 2017-5-31 * @author liuffei * @description 求解n阶幻方 */public class MagicSquare {/** * 连续摆数法:适用于构造奇数阶幻方 * @return */public static int[][] continuousPendulumMethod(int n){//创建一个空的二维矩阵int[][] matrix = new int[n][n];int end = n*n;//最后一个数int begin = n/2 ;//开始的位置int count = 1;matrix[0][begin] = count;int i = 0,j = begin;//循环开始while(count < end){if(i == 0){i = n - 1;j = j + 1;matrix[i][j] = ++count;}//沿斜线上递增while(j < n - 1 && count < end && i > 0){i--;j++;if(0 != matrix[i][j]){//如果已经存在数字,就退到前一个数的下一行上i = i + 2;j = j - 1;matrix[i][j] = ++count;}else{matrix[i][j] = ++count;}}//当递增到右边时,折返到左边,此时i已经加1,j置为0while(j == n -1 && count < end){if(i == 0){i = 1;}else{j = 0;i = i - 1;}matrix[i][j] = ++count;}}return matrix;} /** * 打印矩阵 * @param matrix 矩阵 */ public static void printMatrix(int[][] matrix){ int row = matrix.length; for(int i = 0;i < row;i++){ for(int j = 0;j < matrix[i].length;j++){ System.out.print(matrix[i][j] + " "); } System.out.println(""); } }public static void main(String[] args) {System.out.println("请输入奇数方阵的阶数:");Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[][] matrix = continuousPendulumMethod(n);printMatrix(matrix);}}
(4)实现效果
阅读全文
0 0
- 数据结构之幻方连续摆数法
- 数据结构 幻方
- 数据结构之线性表----连续存储实现
- 数据结构线性结构之连续存储---数组
- 数据结构学习笔记之线性结构--连续存储[数组]
- 幻方之幻
- java数据结构举例-幻方实现
- 数据结构---数组【连续存储】
- 数据结构--连续存储数组算法
- 数据结构——算法之(018)( 和为n连续正数序列)
- 数据结构——算法之(020)( 和为n连续正数序列)
- 无聊之作:幻方问题 ( 全 )
- 幻方解法之总结篇
- cout之连续输出
- iOS 之连续动画
- 【数据结构与算法】LCS(不连续)
- 【数据结构与算法】LCS(连续)
- 定之方中
- Problem A: 字符串类(I)
- scala函数例子
- oracle DBaaS 数据库云服务实践之一添加主机
- Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结
- 补题系列
- 数据结构之幻方连续摆数法
- android三方登录和分享
- 使用InstallShield打包windriver驱动
- 统战gxtyzx环境问题解决
- Android仿ios风格底部弹框
- Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)
- C#系统预定义委托类型Action,Func
- 选择客栈
- Tomcat之BIO/NIO/APR的三大模式