输出模魔方矩阵

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

相关文章

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

如何将一个文件里不包含某个字符的行输出到另一个文件?

第一种: grep -v 'string' filename > newfilenamegrep -v 'string' filename >> newfilename 第二种: sed -n '/string/!'p filename > newfilenamesed -n '/string/!'p filename >> newfilename

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

第六章习题11.输出以下图形

🌏个人博客:尹蓝锐的博客 希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~ 1、题目要求: 输出以下图形

LibSVM学习(五)——分界线的输出

对于学习SVM人来说,要判断SVM效果,以图形的方式输出的分解线是最直观的。LibSVM自带了一个可视化的程序svm-toy,用来输出类之间的分界线。他是先把样本文件载入,然后进行训练,通过对每个像素点的坐标进行判断,看属于哪一类,就附上那类的颜色,从而使类与类之间形成分割线。我们这一节不讨论svm-toy怎么使用,因为这个是“傻瓜”式的,没什么好讨论的。这一节我们主要探讨怎么结合训练结果文件

下载/保存/读取 文件,并转成流输出

最近对文件的操作又熟悉了下;现在记载下来:学习在于 坚持!!!不以细小而不为。 实现的是:文件的下载、文件的保存到SD卡、文件的读取输出String 类型、最后是文件转换成流输出;一整套够用了; 重点: 1:   操作网络要记得开线程; 2:更新网络获取的数据 切记用Handler机制; 3:注意代码的可读性(这里面只是保存到SD卡,在项目中切记要对SD卡的有无做判断,然后再获取路径!)

线性代数|机器学习-P35距离矩阵和普鲁克问题

文章目录 1. 距离矩阵2. 正交普鲁克问题3. 实例说明 1. 距离矩阵 假设有三个点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​,三个点距离如下: ∣ ∣ x 1 − x 2 ∣ ∣ 2 = 1 , ∣ ∣ x 2 − x 3 ∣ ∣ 2 = 1 , ∣ ∣ x 1 − x 3 ∣ ∣ 2 = 6 \begin{equation} ||x