(C语言)打印锯齿矩阵

2023-10-27

关于锯齿矩阵,咱们先来看看题目要求:
图源自计蒜客
最近在参与计蒜客的实践,本题是关于链表,但小编想了好久(技术不精),还是没做出来,于是换成了自己比较习惯的结构体。

原理:

首先,我们需要记录需要插入的整数对应的行号,和这个整数,我用的是结构体。 结构体看起来更加逻辑清晰一些。

结构体如下:

struct line{
    int id;
    int data;
};

(id 表示该整数对应的行号,data 表示该整数)

然后我们需要做的是,将 m 对数据存入到结构体里面。

因为我们得知了行数 n ,所以可以利用双层循环来判断之前存入的数据分别属于哪一行,并存入到一个数组 b[]里面,内层循环结束后,输出数组 b[]中的所有数据,然后将数组 b[] 清空(即初始化)

这一步需要使用一个函数 memset(),不会用的小伙伴可以搜索一下相关知识。

memset(b,0,sizeof(b));

就这样,大概的解题思路就完成了,上代码!!!

代码如下:

#include<stdio.h>
#include<string.h>
struct line{
    int id;
    int data;
};
int main(){
    int n,m,sum=0,b[10002];//为了防止溢出,这里多开了两个单元
    scanf("%d%d",&n,&m);
    struct line a[m];
    memset(b,0,sizeof(b));//初始化数组
    for(int i=0;i<m;i++){
        scanf("%d%d",&a[i].id,&a[i].data);
    }
    for(int i=1;i<=n;i++){  //外层循环是行号
        for(int j=0;j<m;j++){
            if(a[j].id==i){ //判断此时的数据的id是否等于i
                b[sum++]=a[j].data;
            }
        }
        if(sum>0){
            for(int k=0;k<sum;k++){
                printf("%d ",b[k]);
            }
        }
        printf("\n");
        memset(b,0,sizeof(b));//再次初始化
        sum=0;//sum记录数组b的下标,每次内循环结束需要重置为0
    }
    return 0;
}

该算法是小编自己写的,如有雷同,还请见谅。(溜啦)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(C语言)打印锯齿矩阵 的相关文章

  • vue框架

    一 vue是什么 官方解释 vue是一套用于构建用户界面的渐进式框架 vue是一个js框架 提供了一套开发规则 按照这个开发规则可提高开发效率 补充 渐进式意思是 vue js本身功能局限 一旦配合其他的工具可以增强其能力 vue rout
  • Linux离线安装NTP服务,无外网环境下配置本地时间同步

    1 常用命令 rpm qa grep ntp 查询已安装的ntp版本信息等 rpm e nodeps ntp 4 2 6p5 29 el7 centos 2 x86 64 卸载 systemctl status ntpd 查询ntp服务状态
  • es打分机制

    基于Lucene的倒排索引算法
  • 【python数据挖掘课程】二十.KNN最近邻分类算法分析详解及平衡秤TXT数据集读取

    这是 Python数据挖掘课程 系列文章 也是我这学期上课的部分内容及书籍的一个案例 本文主要讲述KNN最近邻分类算法 简单实现分析平衡秤数据集 希望这篇文章对大家有所帮助 同时提供些思路 内容包括 1 KNN算法基础原理知识 2 最近邻分
  • 如何手动运行一个容器【一】

    作者 行云创新 周朋 每个刚涉足容器的人都会对容器的实现有所困惑 容器是如何实现的 是如何复用宿主机的资源 并且实现资源隔离的 下面会用shell创建一个容器 为大家展示一个容器的创建过程 1 创建镜像 我们一般用 docker pull

随机推荐

  • 宏定义的#和##

    宏定义中一个 表示右侧的符号转化为字符串 比如 define STR x x QString s STR 3 编译ok s值为 3 之前在看QT源码时 发现了下面的宏定义 define QLOCATION 0 FILE QT STRINGI
  • Typora + Gitee 配置图床_图片自动上传教程

    一 创建 Gitee 仓库 进入 Gitee 官网 注册一个属于自己的账号 点击创建仓库并且设置为开源 一定要是开源的public 只有这样你的图片才能被别人访问到 二 设置私人令牌 进入个人设置 gt 选择私人令牌进行创建 gt 设置自己
  • 华为od机考真题-HJ6-质数因子(简单)

    while 1 try num int input c 2 while c lt num 0 5 if num c 0 print c end
  • C++ Primer 学习笔记十五 —— 面向对象编程

    记录笔记原则 1 用简单易懂的语言叙述自己的理解 避免照搬原文 2 用实例说明 避免空洞 3 多做总结和横向对比 避免片面 面向对象三个基本概念 抽象 继承 动态绑定 继承使我们简化了类的定义 动态绑定使我们简化了接口的实现 使得所有继承层
  • 探究java IO之AutoCloseable,Closeable和Flushable接口

    http blog csdn net caiwenfeng for 23 article details 41862225 有3个接口对于流类相当重要 其中两个接口是Closeable和Flushable 它们是在java io包中定义的
  • BQ40Z50/BQ4050/BQ40Z80 等 BQ40xxx 系列电量计外围电路设计指导

    TI 电量计在消费和工业市场电池产品广泛应用 本文围绕电量计的功能逐一介绍电量计供电和 采样 对外交互 电池保护 电池均衡等外围电路设计 以帮助大家优化电量计电路设计 提高 开发效率 FAE 壹伍柒 陆陆贰陆 柒捌贰伍 1 电量计外围电路框
  • GPIO 8种工作模式

    GPIO 是什么 GPIO全称General Purpose Input Output 即通用输入 输出 其实GPIO的本质就是芯片的一个引脚 通常在ARM中所有的I O都是通用的 不过由于每个开发板上都会设计不同的外围电路 这就造成GPI
  • QT——操作数据库03

    目录标题 一 安装数据库 二 连接数据库 一 在项目的pro文件中增加一行代码 二 连接sqlite 三 封装连接数据库操作 三 增删查改例子 一 安装数据库 一般使用mysql或者sqlite mysql安装教程 sqlite安装教程 1
  • 多线程顺序打印的5种解法

    多线程同步的方式有许多 有传统的synchronized锁 还可以使用lock锁 下面列举多线程顺序打印的5种解法 算作对线程同步的一个总结 文章目录 经典面试题 多种解法 使用 Lock 使用 wait notify 使用 Lock Co
  • Win10添加开机自动运行软件三种方法(亲测可用)

    Win10管理开机启动项的方法相信大家已经非常熟悉 msconfig命令各系统都通用 那么很多用户发觉Win10和Win7 XP等系统不同 没有启动文件夹 那么我们怎么添加开机启动项呢 如晨软件或程序没有开机启动设置的话 是的 在Win10
  • JGit Authentication JGit验证机制

    验证机制在JGit中大部分与本地git相同 普遍使用SSH协议和HTTP S 协议和他们所支持的验证方法 这篇文章总结了如何使用JGit的验证API去安全连接远程GIT库 虽然在下面的例子中使用的是CloneCommand方法 但是它能实现
  • pip导包时产生错误,UnicodeDecodeError: 'gbk' codec can't decode byte.....illegal multibyte sequence(已解决)

    主要写了解决问题的思路 解决办法在最底部 pip导入python包时产生错误 ERROR Command errored out with exit status 1 command d python38 python exe c impo
  • 使用CSS3的Flex属性让元素居中

    div div
  • 腾讯云,搭建Docker环境

    安装与配置 Docker 任务时间 10min 20min 安装 Docker Docker 软件包已经包括在默认的 CentOS Extras 软件源里 因此想要安装 docker 只需要运行下面的 yum 命令 yum install
  • 【基于大数据的电信诈骗可视化分析-哔哩哔哩】 https://b23.tv/AxkY2Zj

    基于大数据的电信诈骗可视化分析 哔哩哔哩 https b23 tv AxkY2Zj https b23 tv AxkY2Zj
  • SOLIDWORKS如何定制化异型孔向导及其孔标注

    异型孔向导是SOLIDWORKS中一个极为方便的功能 只需要简单的几步设置就可以根据工程师设定好的标准 类型 大小创建符合标准的孔 包括 柱形沉头孔 锥形沉头孔 直孔 直螺纹孔 锥形螺纹孔等等 此外由于工程图和三维模型的协同关联 生成孔的公
  • Linux Vim 简介

    文章目录 01 编辑器 Gedit 介绍 02 什么是 Vi Vim 03 vim工作模式 4 1 命令模式 4 2 编辑模式 4 3 末行模式 04 vim教程 05 vim基本操作 06 vim实用操作 7 1 命令模式下的操作 7 2
  • Anaconda常用指令(详细讲解!!)这一篇文章就够啦!!!小白,新手一定要看的入门文章~~

    各位小伙伴们大家好 今天给大家分享一些关于Anaconda相关的指令 当使用Anaconda作为Python环境和包管理器时 掌握一些常用的指令可以更好地管理和维护您的开发环境 目录 创建和管理环境 安装和管理包 导出和导入环境 管理包仓库
  • Q3营收同比翻三倍,踩猛“油门”零跑必将领跑?

    近日 零跑汽车公布三季度财报 从财报成绩来看 有喜有忧 喜的是销量营收同比环比均出现大幅度增长 忧的是亏损同比扩大86 11 营收同比猛增398 5 销量能否穿越迷雾 详细来看 三季度零跑汽车销量3 56万辆 同比大增186 营收42 88
  • (C语言)打印锯齿矩阵

    关于锯齿矩阵 咱们先来看看题目要求 最近在参与计蒜客的实践 本题是关于链表 但小编想了好久 技术不精 还是没做出来 于是换成了自己比较习惯的结构体 原理 首先 我们需要记录需要插入的整数对应的行号 和这个整数 我用的是结构体 结构体看起来更