HNU软件能力实训2-19. 数圈

本文介绍了如何利用偏移量法解决以1为中心,数字围绕着中心形成的数圈问题。通过分析奇偶性,给出了C++实现的AC代码,并提供了样例输入和输出。
摘要由CSDN通过智能技术生成

写在前面

你好!欢迎来到我的博客,希望我的思路能够帮到你!

问题描述

以1为中心,用2,3,4, …, n, …, n*n的数字围绕着中心输出数圈, 如若n=4,则

7 8 9 10

6 1 2 11

5 4 3 12

16 15 14 13

输入形式

一个整数n(1<=n<=10)

输出形式

数圈矩阵

样例输入

5

样例输出

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

解题思路

借由这道题,给大家隆重介绍偏移量法!

所谓偏移量法,就是声明两个数组,一个用于代表x方向,一个代表y方向,用相同下标的一组坐标作为向量,指示当前的前进方向。具体我会在代码中介绍。

然后根据观察发现,n为奇或者偶时,输出的矩阵会有不同,我索性将奇偶分开讨论进行输出。

AC代码

#include<iostream>
using namespace std;

const int N=15;
int a[N][N];

int main()
{
   
    int n;
    cin>>n;
    if(n%2==1)//n为奇数
    {
   
    //根据观察,n为奇数时最大的数字在右上角
    //且逆时针进行旋转
    //我们以x代表层数,x向下时为正,向上时为负
    //y代表列数,y向左时为负,向右时为正
    //dx和dy就是我们的方向数组
        int dx[]={
   0
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值