奇数阶魔方阵!

2023-05-16

import java.util.Scanner;
public class Test5 {
 /*
  * 打印“魔方阵”。所谓的魔方阵是指这样的方阵,
  * 它的行、列、对角线元素之和均相等。
  * 以下是奇数阶魔方阵!!!!!!!!!!!!!!!!<<<<<<<
  */
 public static void main(String[] args) {
  System.out.println("输入奇数阶数n:");
  Scanner scan=new Scanner(System.in);
  int n=scan.nextInt();
  int[][] a=new int[n][n];
  for (int i = 0; i < a.length; i++) {
   for (int j = 0; j < a[i].length; j++) {
    a[i][j]=0;
   }
  }
  int count=n*n;
  int i=0,j=n/2;
  a[i][j]=1;
  for (int x = 2; x <= count; x++) {
    /* 例如,三阶魔方阵为
    * 8      1       6
    * 3      5       7
    * 4      9       2
    * 定和的公式 :一個 n 階魔方陣的定和可用下列公式求出:(1 + n2) ×n ÷2 
    * 魔方阵的排列规律如下:
    * ⑴将1放在第一行中间一列;
    * ⑵从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1(例如上面的三阶魔方阵,5在4的上一行后一列);
    * ⑶如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则2应放在最下一行,列数同样加1;
    * ⑷当上一个数的列数为n时,下一个数的列数应为1,行数减去1。例如2在第3行最后一列,则3应放在第二行第一列;
    * ⑸如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。例如按上面的规定,4应该放在第1行第2列,但该位置已经被占据,所以4就放在3的下面;
    * */
   int lasti=i--; //i=-1;
   int lastj=j++; //j=2;
   if(lasti==0&&!(lastj==n-1))
   {
    i=n-1;
   }
   if(lastj==n-1&&!(lasti==0)){
    j=0;  
   }
   if(lasti==0&&lastj==n-1){
    i=i+2;
    j--;
   }
   if((a[i][j]!=0)){
    i=i+2;
    j--;
   }
   if(a[i][j]==0){
    a[i][j]=x;
   } 
  }
  for (int j2 = 0; j2 < a.length; j2++) {
   for (int k = 0; k < a[j2].length; k++) {
    System.out.print(a[j2][k]+"\t");
   }
   System.out.println();
  }
 }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奇数阶魔方阵! 的相关文章

随机推荐

  • C语言随笔-去掉仅有\n的行

    include lt stdio h gt int main int argc const char argv char str 128 char linep strcpy str 34 12 35 56 n12 33 87 n n n n
  • python3.6-深入浅出视频

    课程收益 适合人群 python小白 xff0c 大数据和机器学习编程程序员 上机实践为主线 以最快的速度上手 快速入门 xff0c 还学到了python3的核心知识 https edu csdn net course detail 989
  • 数学之路(3)-机器学习(3)-机器学习算法-神经网络[11]

    多层感知器的代码 xff0c 需要一个比较复杂的调试过程 xff0c 不过也有一些方法来加快这一速度 xff0c 其中有几个地方要注意 xff1a 1 输入层 输出层 中间层的学习率和动量参数不能一样 xff0c 2 3个层的权值策略不能一
  • 14、iOS里面的富文本

    iOS里面的富文本 1 NSAttributedString属性概览表2 属性详解及应用2 1 NSAttributedString Key font 字体大小2 2 NSAttributedString Key paragraphStyl
  • 马化腾五兄弟:难得的创业团队

    http www donews com people 201105 455471 shtm 腾讯的马化腾创业5兄弟 xff0c 堪称难得 xff0c 其理性堪称标本 12年前的那个秋天 xff0c 马化腾与他的同学张志东 合资 注册了深圳腾
  • 选择创业团队的类型

    从不同的角度 层次和结构 xff0c 可以划分为不同类型的创业团队 xff0c 而依据创业团队的组成者来划分 xff0c 创业团队有星状创业团队 xff08 Star Team xff09 网状创业团队 xff08 Net Team xff
  • MQTT3.1与UDP时效性分析

    前言 MQTT 3 1协议在弱网络环境下 xff08 比如2G 3G等 xff09 表现不够好 xff0c 因此才有了反思 弱网环境下表现 手机等终端在弱网络环境下丢包情况会非常明显 xff0c 连接MQTT Server成功率很低 相比单
  • Android APP开机自启动基本方法

    前言 应用自启动主要是通过接收系统广播BOOT COMPLETED来实现的 xff0c 在receiver中执行APP启动的方法 实现 主要分为两个部分 xff1a AndroidManifest xml配置 xff0c 包括权限配置和广播
  • gitlab markdown 支持TOC解决办法

    问题分析 1 标题的锚点会被替换 中文替换为 39 39 空格等非正常字符替换为 39 39 这给自己手动写toc也带来了麻烦 不能直接复制标题作为链接 2 不能自动生成TOC 目前gitlab不支持TOC功能 解决方法 1 解决中文问题
  • 数据科学家能力发展路线图

  • 每秒处理10万订单乐视集团支付架构

    随着乐视硬件抢购的不断升级 xff0c 乐视集团支付面临的请求压力百倍乃至千倍的暴增 作为商品购买的最后一环 xff0c 保证用户快速稳定的完成支付尤为重要 所以在15年11月 xff0c 我们对整个支付系统进行了全面的架构升级 xff0c
  • 一次心惊肉跳的服务器误删文件的恢复过程

    经历了两天不懈努力 xff0c 终于恢复了一次误操作删除的生产服务器数据 对本次事故过程和解决办法记录在此 xff0c 警醒自己 xff0c 也提示别人莫犯此错 也希望遇到问题的朋友能找到一丝灵感解决问题 事故背景 安排一个妹子在一台生产服
  • WIFI模块的各种配网方式之比较(串口AT、SmartConfig、微信Airkiss、WEB网页配网....)

    WIFI模块的各种配网方式之比较 如何对WIFI模块进行配网 xff1f 串口AT xff1f 微信Airkiss xff1f SmartConfig xff1f No xff01 WEB网页配网最简单 最方便 所受限制也最少 xff01
  • Android studio2.3.2 配置kotlin、Anko

    祝 xff1a 本文配置基于Android studio 2 3 2 xff0c gradle3 3 jdk1 8 1 下载kotlin插件 打开Settings面板 xff0c 找到Plugins选项 xff0c 点击Browse rep
  • TCP/UDP的套接字Socket通信工作流程

    一 面向连接的套接字Socket通信工作流程 为了实现服务器与客户机的通信 服务器和客户机都必须建立套接字 服务器与客户机的工作原理可以用下面的过程来描述 1 服务器先用 socket 函数来建立一个套接字 用这个套接字完成通信的监听 2
  • VirtualBox 如何能捕获/释放鼠标

    xff11 xff0e 热键的选项 xff1a 鼠标集成不选择 xff12 xff0e 当你点击虚拟机的时候会出现下图 xff0c 选择捕获就可以了 xff13 xff0e 但你无法移出到外面主机的时候 xff0c 按住键盘右侧的Ctrl移
  • onNewIntent触发的时机

    前提 ActivityA已经启动过 处于当前应用的Activity堆栈中 当ActivityA的LaunchMode为SingleTop时 xff0c 如果ActivityA在栈顶 且现在要再启动ActivityA xff0c 这时会调用o
  • tomcat各版本下载地址

    https archive apache org dist tomcat
  • Android屏幕尺寸适配常见方案smallestWidth

    前言 介于目前的Android设备存在有不同的屏幕尺寸 xff0c 屏幕分辨率 xff0c 像素密度 xff0c Android应用在开发的过程必须要考虑到屏幕尺寸适配的问题 xff0c 以保证在不同尺寸的Android设备上都能够正常运行
  • 奇数阶魔方阵!

    import java util Scanner public class Test5 打印 魔方阵 所谓的魔方阵是指这样的方阵 xff0c 它的行 列 对角线元素之和均相等 以下是奇数阶魔方阵 xff01 xff01 xff01 xff0