输出模魔方矩阵

2024-08-24 06:32
文章标签 输出 矩阵 魔方

本文主要是介绍输出模魔方矩阵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

魔方矩阵的一般定义:将自然数 1 到 N^2, 排列 N 行 N 列的方阵,使每行、每列及两条主对角线上的 N 个数的和都等于N (N^2+1)/2,这样的方阵称为 N 阶幻方。

#include<iostream>
using namespace std;
int count_dig(int n)//计算整数的位数,因为15的平方才225,所以最多3位
{for(int i = 100, j = 3; i >=1 ; i /= 10, j--){if(n / i >= 1)return j;}
}
int main()
{int n;int matrix[15][15];bool first = true;while(cin >> n){if(!first)cout << endl;else first = false;for(int i = 0; i < n; i++)for(int j = 0; j < n; j++)matrix[i][j] = 0;//清零int x = 0, y = n / 2;matrix[x][y] = 1;int next = 2;int max = n * n;while(next <= max){int tmp_x = x - 1;//往右上角走int tmp_y = y + 1;if(tmp_x < 0)tmp_x = tmp_x + n;//超出边界则会绕if(tmp_y > n - 1)tmp_y = tmp_y - n;if(matrix[tmp_x][tmp_y] != 0 || (x == 0 && y == n - 1))//若右上角位置有数或前一个数位置是最右上角,则下一个数填在前一个数下面x++;else {x = tmp_x;y = tmp_y;}matrix[x][y] = next++;}int length = count_dig(n * n);cout << "n=" << n << ',' << " sum=" << (1 + n * n) * n / 2 << endl;//输出矩阵for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){cout << ' ';for(int space = 0; space < length - count_dig(matrix[i][j]); space++)cout << ' ';cout << matrix[i][j];}cout << endl;}}
}
题目:

Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

Description

If you have good observations skills, you may found that building a Magic Square is simple. A Magic Square has only an odd number N of rows and columns. For this problem you could expect the values to be 3$ \le$N$ \le$15 . A Magic Square is created by integer numbers in the range from 1 to N2 , with a peculiar property, the ``sum of the numbers" in each row, column and diagonal is the same value.


For example the case for n = 3 is:

M. Square                Rows          Columns       Diagonals
8 1 6                   8+1+6 = 15    8+3+4 = 15    8+5+2 = 15
3 5 7                   3+5+7 = 15    1+5+9 = 15    4+5+6 = 15
4 9 2                   4+9+2 = 15    6+7+2 = 15


Input

A file with several lines, each line has the value of n .

Output

For each input line, print N and the sum in the first line, followed by the magic square. To see a nice looking square, take into account the maximum length in characters of N2 and print each number with the maximum length preceded by one space or blank character. Print one line between squares.

Sample Input

3
5

Sample Output

n=3, sum=158 1 63 5 74 9 2n=5, sum=6517 24  1  8 1523  5  7 14 164  6 13 20 2210 12 19 21  311 18 25  2  9


这篇关于输出模魔方矩阵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101709

相关文章

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,