杂题——1188: 做幻方

题目描述
Apple最近迷上了做幻方,Apple还是个中高手,只要你说个奇数N就能把N*N的幻方做出来。其实你可以比他做得更好的。Apple总是画得很乱,而你可以利用程序排得很整齐^_^ 幻方的要求:每一行,每一列,还有两条斜线上数字的和都相等.

输入格式
每行一个奇数N(0< N < 30),输入0结束

输出格式
输入一个奇数,输出一个幻方,顺序参照样板输出;同一列的数右对齐,数与数用一个空格分开;输出完以后加一个回车。

样例输入
5
1
0
样例输出
11 18 25  2  9
10 12 19 21  3
 4  6 13 20 22
23  5  7 14 16
17 24  1  8 15

1

分析:

  • 数字 1 放在最后一行的中间位置,然后按照如下规则填充其他数字:

    • 向右下方移动一个位置,并依次填入数字,如果下一个位置已填有数字,就不往右下角走了,往上走一行
    • 从数字1开始一直填充到n*n

    • 如果超出矩阵的边界,则将位置移到对应的反方向位置(例如,超出上边界则移到下边界,超出右边界则移到左边界)。
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (true) {// 读取输入的奇数nint n = scanner.nextInt();if (n == 0) {break;  // 如果输入为0,则退出循环}      int[] format=new int[n];//每一列最长的数字位数,方便输出时右对齐int[][] magicSquare = generateMagicSquare(n,format);// 生成幻方矩阵// 输出幻方矩阵printMagicSquare(magicSquare,format);}}// 生成幻方矩阵的方法public static int[][] generateMagicSquare(int n,int[] format) {int[][] magicSquare = new int[n][n];int row = n - 1;//最下面一层的中间位置填1,也从此开始int col = n / 2;for (int num = 1; num <= n * n; num++) {//从数字1开始一直填充到n*nmagicSquare[row][col] = num;//填入数字// 计算每列最长数字的位数int digits = (int)(Math.log10(magicSquare[row][col]) + 1);format[col]=Math.max(format[col], digits);row = (row + 1) % n;//往右下方向移动到下一个位置,如果已经到达矩阵边界,则回到对应的行列的开头,%n是为了不超出n的范围col = (col + 1) % n;if (magicSquare[row][col] != 0) {//下一个位置已经填充了数字//下一个位置无法填充,返回原来的位置row = (row - 1 + n) % n;//将行向上移动一位col = (col - 1 + n) % n;//将列向左移动一位//来到原来位置的上一行row = (row - 1 + n) % n;}}return magicSquare;}// 输出幻方矩阵的方法public static void printMagicSquare(int[][] magicSquare, int[] format) {for (int i = 0; i < magicSquare.length; i++) {for (int j = 0; j < magicSquare[i].length; j++) {System.out.printf("%" + format[j] + "d ", magicSquare[i][j]);  //每个数字占format[j]个格子}System.out.println();  // 换行}System.out.println();  // 输出空行}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外贸网站建设需要注意什么

在外贸网站建设过程中&#xff0c;需要注意以下几点&#xff1a; 多语言支持&#xff1a;考虑目标市场的语言需求&#xff0c;提供多语言版本的网站&#xff0c;以便更好地与国际客户进行沟通和交流。 跨境支付和物流&#xff1a;为国际客户提供方便快捷的跨境支付方式&#x…

【Godot4.2】 基于SurfaceTool的3D网格生成与体素网格探索

概述 说明&#xff1a;本文基础内容写于2023年6月&#xff0c;由三五篇文章汇总而成&#xff0c;因为当时写的比较潦草&#xff0c;过去时间也比较久了&#xff0c;我自己都得重新阅读和理解一番&#xff0c;才能知道自己说了什么&#xff0c;才有可能重新优化整理。 因为我对…

【C++】struct和class区别

在 C 中&#xff0c;struct 和 class 都可以用来定义自定义的数据类型&#xff0c;但它们在语法上有一些区别&#xff0c;主要体现在访问权限和默认继承方式上&#xff1a; 默认访问权限&#xff1a; 在 struct 中&#xff0c;默认的成员访问权限是 public&#xff0c;即结构…

分光器和分流器

分光器 是一种无源器件&#xff0c;所谓无源是指不需要外接电源&#xff0c;只要有输入光就可以正常工作。分光器由入射和出射狭缝、反射镜和色散元件组成&#xff0c;其作用是将所需要的共振吸收线分离出来&#xff0c;对光信号进行比例分配&#xff0c;其中大比例光信号给业…

Java Json序列化工具使用比较

前言 在软件程序开发中&#xff0c;数据的传输和存储是一项非常重要的任务。特别是在分布式系统中&#xff0c;数据的序列化和反序列化是一项关键的技术&#xff0c;以确保不同系统之间的数据交换的正确性和高效性。 JSON&#xff08;JavaScript Object Notation&#xff09;是…

打造精美响应式CSS日历:从基础到高级样式

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

ARM开发板实现24位BMP图片缩放

ARM开发板实现24位BMP图片缩放 一、linux平台bmp图片缩放 最近想在ARM开发板实现BMP图片的缩放&#xff0c;查看了一些资料&#xff0c;大家部分理论知识可参考&#xff1a; akynazh博主 &#xff0c;这位博主程序以window平台为主进行显示&#xff0c;发现在linux平台下编译…

Nginx高可用实施指南:从规划到部署的全面解析

准备工作 192.168.16.128 192.168.16.129 两台虚拟机。 安装Nginx 更新yum源文件&#xff1a; rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyu…

堆排序(数据结构)

本期讲解堆排序的实现 —————————————————————— 1. 堆排序 堆排序即利用堆的思想来进行排序&#xff0c;总共分为两个步骤&#xff1a; 1. 建堆 • 升序&#xff1a;建大堆 • 降序&#xff1a;建小堆 2. 利用堆删除思想来进行排序. 建堆和堆删…

12|检索增强生成:通过RAG助力鲜花运营

什么是 RAG&#xff1f;其全称为 Retrieval-Augmented Generation&#xff0c;即检索增强生成&#xff0c;它结合了检 索和生成的能力&#xff0c;为文本序列生成任务引入外部知识。RAG 将传统的语言生成模型与大规模 的外部知识库相结合&#xff0c;使模型在生成响应或文本时可…

LeetCode 每日一题 Day 102-108

2864. 最大二进制奇数 给你一个 二进制 字符串 s &#xff0c;其中至少包含一个 ‘1’ 。 你必须按某种方式 重新排列 字符串中的位&#xff0c;使得到的二进制数字是可以由该组合生成的 最大二进制奇数 。 以字符串形式&#xff0c;表示并返回可以由给定组合生成的最大二进…

多个upload组件放在for循环调用submit失效的解决方法

示例代码 <div class"item" v-for"(item,index) in lbtList"><!-- 图片上传 --><div><el-uploadaction"#":ref"uploadindex"list-type"picture-card":limit"1":file-list"item.fileLi…

每日OJ题_简单多问题dp④_力扣LCR 091. 粉刷房子

目录 力扣LCR 091. 粉刷房子 解析代码 力扣LCR 091. 粉刷房子 LCR 091. 粉刷房子 难度 中等 假如有一排房子&#xff0c;共 n 个&#xff0c;每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种&#xff0c;你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相…

3.18号arm

4 跳转指令 实现汇编程序跳转的两种方式 直接修改PC的值 mov pc , #0x04 通过跳转指令跳转 b 标签 程序跳转到指定的标签下执行&#xff0c;此时LR寄存器不保存返回地址 bl 标签 程序跳转到指定的标签下执行&#xff0c;此时LR寄存器保存返回地址 5 内存读写指令&#xff0…

Vue+SpringBoot打造用户画像活动推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活动档案模块2.4 活动报名模块2.5 活动留言模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 数据流程设计3.4 E-R图设计 四、系统展示五、核心代码5.1 查询兴趣标签5.2 查询活动推荐…

英伟达深夜放王炸|字节跳动游戏之路波折不断|文旅短剧风口将至|25岁QQ魅力不减,5亿人在用|云计算市场疯长152%|电商巨头齐瞄向富足悠闲银发族

新闻一分钟速览 文旅短剧风口将至&#xff0c;一地狂拍十部&#xff0c;影视界看法分歧&#xff0c;悬念丛生&#xff01;字节跳动游戏之路波折不断&#xff0c;能否逆风翻盘引关注。折叠屏手机痛症治愈&#xff0c;实力席卷高端市场&#xff0c;势头强劲&#xff01;雷军豪言…

学习笔记Day12:初探LInux 2

Linux初探 同一个目录中不允许出现文件及文件夹重名 查看文件 cat &#xff08;Concatenate&#xff09;查看文本文件内容&#xff0c;输出到屏幕&#xff08;标准输出流&#xff09; 常用参数 -A打印所有字符&#xff0c;包括特殊字符&#xff08;换行符、制表符等&#xff…

[CF0526C] Om Nom and Candies 解题记录

[CF0526C] Om Nom and Candies 解题记录 题意简述 有红色和蓝色两种糖果&#xff0c;每颗红糖重 W r W_r Wr​ 克&#xff0c;每颗蓝糖重 W B W_B WB​ 克。吃一颗红糖可以获得 H r H_r Hr​​ 的快乐值&#xff0c;吃一颗蓝糖可以获得 H b H_b Hb​​ 的快乐值。 问在最多…

File的学习1

File对象就表示一个路径&#xff0c;可以是文件的路径&#xff0c;也可以是文件夹的路径 这个路径可以是存在的&#xff0c;也可以是不存在的。 package MyFile;import java.io.File;public class FileDemo01 {public static void main(String[] args) {//1.根据文件路径创建…

如何定期清理数据库中的无效数据?

企业的数据库在运行相当长一段时间后&#xff0c;都会出现无效数据的堆积&#xff0c;这些数据包含了过时、重复、错误、缺失&#xff08;空字段&#xff09;的数据&#xff0c;长期占据着宝贵的数据库空间。而在上云热潮的推动下&#xff0c;绝大多数企业已经将他们的业务数据…