Z数组和螺旋数组

PAT数组-13. 螺旋方阵(20) 数组-13. 螺旋方阵(20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 所谓“螺旋方阵”,是指对任意给定的N,将1到N*N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入NxN的方阵里。本题要求构造这样的螺旋方阵。 阅读详情

Z数组:

#include<stdio.h>
#include<stdlib.h>
void fun(int n){
    /*动态创建二维数组*/
    int **a = (int **)malloc(n*sizeof(int*));
    if(a==NULL)
        return;
    int i,j;
    for(i=0;i<n;i++)
        a[i] = (int*) malloc(n*sizeof(int));
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            int k = i + j;
            if(k<n){
                int sum = k*(k+1)/2;
                int index;
                index = (k%2==0)? j : i ;
                a[i][j] = sum  + index;
            }else{
                int t = 2*n-1-k;
                int sum = (1+t)*t/2;
                sum = n*n-1-sum;
                int index = (k%2==0) ? (n-i) : (n-j);
                a[i][j] = sum + index;
            }
        }
    }

    for(i = 0;i<n;i++){
        for(j=0;j<n;j++){
            printf("%d\t",a[i][j]);
        }
        printf("\n");
    }

    /*释放*/
    for(i=0;i<n;i++)
        free(a[i]);
    free(a);

    return;
}


int main(){
    int n;
    scanf("%d",&n);
    printf("%d\n",n);
    while(n!=0){
        fun(n);
        scanf("%d",&n);
        printf("%d\n",n);
    }
    return 1;
}


螺旋数组:

#include<stdio.h>
#include<stdlib.h>

void fun(int n){
    //动态创建二维数组
    int **arry = (int **)malloc(n*sizeof(int*));
    if(arry==NULL)
        return;
    int i,j;
    for(i=0;i<n;i++)
        arry[i] = (int*) malloc(n*sizeof(int));
    //螺旋数组
    int k=0,a=1;
    i=j=0;
    for(;k<(n+1)/2;k++){
        while(j<n-k) arry[i][j++] = a++; i++; j--;
        while(i<n-k) arry[i++][j] = a++; i--; j--;
        while(j>=k)  arry[i][j--] = a++; i--; j++;
        while(i>k)   arry[i--][j] = a++; i++; j++;
    }
    for(i=0;i<n;i++){
        for(j=0;j<n;j++)
            printf("%d\t",arry[i][j]);
        printf("\n");
    }

    //释放内存
    for(i=0;i<n;i++)
        free(arry[i]);
    free(arry);

    return;
}

int main(){
    int n;
    scanf("%d",&n);
    while(n!=0){
        fun(n);
        scanf("%d",&n);
    }
    return 1;
}


实战派指南:反激电源EMI滤波器设计,从理论计算到PCB布局避坑 本文详细解析了反激式开关电源EMI滤波器设计的全流程,从理论计算到PCB布局避坑,结合34W PD快充电源案例,系统介绍了共模与差模干扰的识别、关键元件选型、参数计算优化及PCB布局技巧,帮助工程师有效解决传导测试超标等常见问题。 阅读详情

相关推荐

ArcGIS图解建模工具与DEM提取山脊、山谷线(水文分析、表面分析)

参考汤国安、杨昕等编著的《地理信息系统空间分析实验教程第二版》 利用水文分析(流量)和表面分析(坡向变率)得到山脊和山谷线 文章目录1、基本概念1.1 正地形1.2 负地形正负地形的影响2、水文分析方法2.1 基本思想原理2.2 技术路线2.3 操作步骤2.3.1 正负地形的提取2.3.2 利用水文分析思想和工具提取研究区域的山脊线2.3.3 利用水文分析思想和工具提取研究区域的山谷线2.3.4 利用水文分析提取山脊线和山谷线结果3、表面分析方法3.1 基本思想原理3.2 技术路线3.3 操作步骤4、图.

fungis 1万+

(超简单、超易懂、超详细)算法精讲(二十八): Z算法

Z算法是一种用于字符串匹配的线性时间算法。它可以在O(n+m)的时间复杂度内,在一个给定的文本串T和一个模式串P中,找到所有匹配的位置。Z算法的基本思想是维护一个称为Z数组的辅助数组,其中Z[i]表示以字符串T中的第i个字符为起始位置与模式串P的匹配长度。通过逐个字符比较模式串和文本串中的字符,可以计算出Z数组。Z数组的计算过程分为两个阶段:初始化阶段和迭代计算阶段。

Malex2024的博客 1398

别再死记硬背Payload了!深入理解Flask/Jinja2 SSTI的Python对象继承链与魔术方法

本文深入解析Flask/Jinja2 SSTI漏洞的底层原理,从Python对象模型出发,详细讲解如何通过魔术方法链实现RCE。文章揭示了Python对象继承链与魔术方法的精妙设计,提供了防御与绕过SSTI漏洞的实用技巧,帮助开发者深入理解漏洞本质并采取有效防护措施。

weixin_42525738的博客 356

字符串模式匹配:Z 算法

数组的辅助数组来工作。现在,当我们用一个附加字符将模式连接到我们的原始字符串时,基本上我们将新创建的字符串的前缀(即我们的模式)与字符串的其余部分(即要搜索的字符串)匹配。,我们首先将搜索模式和要搜索的字符串连接在一起,在两者之间添加另一个字符,该字符在任何字符串中都不存在。个字符,这也是我们的模式。正如我们在示例中看到的,我们已经将模式和字符串连接在一起,中间有一个附加字符,这两个字符都不存在。由于我们添加了一个在任何字符串中都不存在的附加字符,因此我们确信永远不会找到比我们的模式更长的字符串。

新华编程特战队 1419

win10安装openvpn客户端

进入C:\Program Files\TAP-Windows\bin目录,然后右键用管理员权限执行addtap.bat文件,此文件执行会创建一个网卡。链接:https://pan.baidu.com/s/1KAifTiP7qp1i5ZkfdnfwkA。4.2 进入安装目录的config下新建一个文件夹,将证书文件全部挪进去(不移动.ovpn文件)3.4 将拿到的ssl认证文件放入安装目录的config目录下。然后修改ovpn文件 “./”代表当前路径,第二个链接重复。3.1 一直下一步到这里打上勾。

qq_36200932的博客 3万+

【没有网络,安装python包】如何从 PyPI 下载并安装 Plotly 的离线包

在某些情况下,您可能需要在没有互联网连接的环境中安装 Python 包,例如在飞机上、在某些受限制的网络环境中或在需要离线安装的场景下。以下是如何在 PyPI(Python Package Index)下载 Plotly 包并进行离线安装的详细步骤。

赖德发的博客 1103

【数据结构与算法】Z算法(扩展KMP)(C++和Python写法)

Z算法(扩展KMP)

小雨的分享斋 1299

图神经网络实战(7)——图卷积网络(Graph Convolutional Network, GCN)详解与实现

图卷积网络 (Graph Convolutional Network, GCN) 架构由 Kipf 和 Welling 于 2017 年提出,其理念是创建一种适用于图的高效卷积神经网络。在本节中,我们将讨论 Vanilla GNN 架构的局限性,并详细介绍 GCN 的工作原理,通过使用 PyTorch Geometric 在 Cora 和 Facebook Page-Page 数据集上实现 GCN 来验证其性能。

盼小辉丶的博客 2万+

PTA作业 螺旋数组

/count的作用是实现螺旋中12345递增,与下文的count++一起实现。//如果n是奇数,最中间的那个数要自己输入。#include<stdio.h>//我用的是一层一层将1,2,3......放入数组最后输出的方法。i++)//这边可以用特殊值理解,例如输入5要螺旋3层。//定义1000是因为数组不能用变量定义。//注意需要换行(每n个。

Fierce777的博客 92

把 SM30 用顺:从表设计到权限与传输,全面掌握 SAP Table Maintenance Generator

摘要 SAP的Table Maintenance Generator(TMG)是为配置表维护需求设计的经典工具,能够生成标准化的维护对话框(SM30)。它支持单表、维护视图(多表关联)和视图簇(导航式维护)三种维护对象类型。使用TMG前需注意三个关键设置:1)表维护权限选项;2)交付类(决定数据传输行为);3)客户端字段配置。通过SE54/SE11生成维护对话框时,需选择维护类型(一步/两步)和记录例程(控制传输)。TMG生成的对象包含函数组、屏幕和处理模块,但部分标准框架不可修改。实际应用中,可通过参数事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 176

基于STM32设计的智能厨房环境监测报警系统_426

随着天然气、液化石油气等可燃性气体在家庭中的广泛应用,燃气泄漏所引发的安全问题日益突出。针对传统家用可燃气体报警器功能单一、信息获取受限以及缺乏远程监测能力等不足,设计了一种基于STM32单片机的家用可燃气体报警器系统。

760

PTA C语言实现螺旋方阵

解决PTA的螺旋方阵问题

fresher10086的博客 1673

使用 MATLAB/Simulink 构建一个基于FOC控制的PMSM矢量控制仿真模型

本教程详细介绍了基于Simulink的永磁同步电机(PMSM)磁场定向控制(FOC)仿真建模过程。主要内容包括:PMSM电机参数设置、Clarke/Park变换模块设计、电流环PID控制器构建、SVPWM调制实现等关键步骤。教程提供了完整的建模流程、参数配置建议和仿真调试方法,并给出了PID整定技巧和进阶优化方向。通过该模型,可深入理解PMSM矢量控制原理,掌握高性能电机控制系统的建模技术,为伺服系统、电动汽车驱动等应用领域提供仿真基础。教程还推荐了使用PIDTuner工具进行参数优化,并提出了加入负载扰动

amy_mhd的博客 644

python–leetcode–数组之形状变化

python–leetcode–数组之形状变化 6.Z字形变换 Z字形变换:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 思路:根据给定行数构建默认行数空串,根据z字型变换,设置flag方向,到达临界转换方向,添加到默认空串中,最后再进行拼接。 def convert(s: str, numRows: int): if numRows < 2: return s res = ['' for _ in range(numRows)] i

weixin_44332995的博客 223

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数组骚操作(未完待续)

预处理的意思就是在常规的遍历中,先计算某些需要的数据,而不是等到遍历每个点,再去计算一次。 1582. 二进制矩阵中的特殊位置 力扣传送门 思路一:预处理 对于特殊位置,需要保证该点所在的行,所在列的其它位置都是0,相当于行的元素之和、列的元素之和都为1。最容易想到的就是遍历到为1的点,就去判断该点所在的行和列是否符合,但这样对于同一行或者同一列的点,我们就要重复计算好多次。所以我们可以先计算并保存每一行、每一列的元素之和,在遍历判断时就可以直接读取保存的值,预处理使得每一行每一列只需计算一次。 cla

qq_45833812的博客 584

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【力扣LeetCode热题h100】子串、普通数组、矩阵

本文总结了LeetCode热题中的子串相关题目,包括滑动窗口和前缀和等解法。重点介绍了三个典型问题:1)和为K的子数组,通过前缀和+哈希表统计满足条件的子数组个数;2)滑动窗口最大值,使用优先队列或单调队列高效获取每个窗口的最大值;3)最小覆盖子串,通过滑动窗口和哈希表寻找覆盖目标字符串的最小子串。这些题目考察了数组处理、滑动窗口优化等技巧,在笔试面试中频繁出现,具有重要参考价值。

qq_41725967的博客 424

球球速刷LC之数组 三轮

旋转矩阵 技巧是先将矩阵按对角线交换,在翻转每一行 void swap(int &a , int &b) { int temp = a; a =b; b = temp; } void reverse(vector<int>&array) { int i = 0; int j =array.size()-1; while(i < j) { swap(array[i] , array[j]);

tianming1992的专栏 291

力扣(LeetCode)刷题,简单+中等题(第33期)

力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

不脱发的程序猿 2万+

LeetCode 热题 100 Python3易懂题解(普通数组,矩阵)

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。6连续子数组 [4,-1,2,1] 的和最大,为 6。nums = [1]123这个太简单了,和洛谷的p1115一样,那个用c++写了题解可以去主页看。不要想得太复杂!!!

qq_51652391的博客 858

LeetCode 热题 100 | 矩阵

重点:1.思路:1.

Triple_3的博客 602

今日矩阵系列

思想:用两个数组来标识需要置为0的行和列将标识的位置0空间复杂度O(m+n)

qq_59259601的博客 450

2025年12月1日力扣刷题小记

本文记录了2025年12月1日在力扣平台刷题的五个算法题解:数组题"下一个排列",通过查找交换点和反转实现;链表题"螺旋矩阵IV",按螺旋顺序填充链表值;字符串题"Z字形变换",两种实现方式;栈题"商品折扣价",利用栈结构计算最终价格;队列题"招式拆解II",使用哈希表统计字符频率。每道题都包含详细思路说明和完整代码实现,涵盖了数组处理、链表遍历、字符串变换、栈应用和哈希表使用等常见算法技巧。

su17643217590的博客 628

【JAVA算法|hot100】矩阵类型题目详解笔记

本文记录了四道矩阵相关算法题的解题思路和代码实现。73题通过辅助数组标记零元素位置后修改原矩阵;54题使用方向数组模拟顺时针螺旋遍历;48题利用坐标变换规律实现原地90度旋转;240题从左下角开始利用行列有序特性进行高效搜索。每道题都包含解题关键思路和核心代码实现,重点掌握矩阵遍历、方向控制、坐标变换等技巧。

2303_80850235的博客 424

小鸡玩算法-力扣HOT100-矩阵

力扣HOT100-java-矩阵(矩阵置零、旋转矩阵、旋转图像、搜索二维矩阵||)

suo57Kn的博客 181

c++螺旋数组

力扣打卡

QYJ_2397004022的博客 945

螺旋矩阵(java)

输出螺旋矩阵螺旋方阵示例代码部分 螺旋方阵 输出螺旋方阵,采用二维数组存储。螺旋方阵将从1开始的自然数由方阵的最外圈向内螺旋方式的顺序排列。 示例 代码部分 package juju0921; import java.util.Scanner; public class Juju { public static void main(String[] args) { int i=0,j=0;...

sea_r的博客 1853
上一篇: 反转单向链表
下一篇: 求一个字符串中连续出现次数最多的字串.[面试宝典14.5节]
juiceda
博客等级 码龄18年 10粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值