算法05 模拟算法之二维数组相关内容详解【C++实现】

大家好,我是bigbigli,前面一节我们一节讲过一维数组的模拟了,如果还没看的话,可以👉点击此处。模拟算法还有很多内容需要讲,比如图像、日期相关的模拟算法,后续将继续更新,今天先来讲一下普通的二维数组相关模拟题目。

目录

训练:外围元素之和

解析

参考代码

训练:稀疏矩阵

解析

参考代码

训练:矩阵检测

解析

参考代码


训练:外围元素之和

给定一个m行n列的矩阵,求矩阵外围元素之和。所谓矩阵外围的元素,是矩阵第一行、最后一行、第一列和最后一列的所有元素。

【输入描述】第1行:为两个整数,分别表示矩阵的行数m和列数n,中间以一个空格间隔;

接下来m行为该矩阵m行n列的元素,且都为整数,每一行元素之间以一个空格隔开。

【输出描述】一个整数,表示该矩阵外围元素之和。

【样例输入】

3 4
1 2 2 1
5 6 7 8
9 3 0 5

【样例输出】

36

解析

外围元素需要把两行两列的元素全部加起来就行,需要在二维数组的中查找到满足行是第一行或者最后一行的,以及列是第一列的和最后一列的元素,求和即可。要注意的是不可以单独求出两行和两列分别的四个行列和,然后再相加,那样会有重复元素。

 

参考代码

#include<iostream>
using namespace std;
int a[110][110];
int main(){int m,n,sum=0;cin>>m>>n;for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){cin>>a[i][j];//输入元素后即可判断if(i==1 || i==m || j==1 || j==n)sum+=a[i][j];//满足任一条件求和   }}cout<<sum;return 0;   
}

训练:稀疏矩阵

大部分元素是0的矩阵称为稀疏矩阵,假设有n个非0元素,则可把稀疏矩阵用n*3的矩阵简记之,其中第一列是行号,第二列是列号,第三列是该行、该列下的非0元素的值。

如:

0  0  0  3

0  2  0  0

0  5  0  0

简记成:

1  4  3        //第1行第4列有个数是3

2  2  2        //第2行第2列有个数是2

3  2  5        //第3行第2列有个数是5

试编程读入一稀疏矩阵,转换成简记形式,并输出。

【输入描述】第1行,两个整数,为原始矩阵的行数a和列数b;

之后的a行为a行b列的矩阵

【输出描述】输出为化为简记形式之后的矩阵(行数不确定,列数为3)。

【样例输入】

3 4
0 0 0 3        
0 2 0 0                         
0 5 0 0

【样例输出】

1 4 3
2 2 2
3 2 5

解析

要对原数组中非0元素的位置和元素值进行记录,可以记在另一个二维数组里面,行数不确定,列数为3列。

即在循环中实现

b[t][1] = i

b[t][2] = j

b[t][3] = a[i][j]

 

参考代码

#include<iostream>
using namespace std;
int a[110][110], b[10010][4];
int main()
{int m,n,t=1;cin>>m>>n;for(int i=1;i<=m;i++)for(int j=1;j<=n;j++){cin>>a[i][j];if(a[i][j]!=0){b[t][1]=i;  //把非0元素的行号保存到新数组第一列b[t][2]=j;  //把列号存在新数组第二列b[t++][3]=a[i][j];  //元素值存在新数组第三列,且新数组行号加1}}for(int i=1;i<t;i++)cout<<b[i][1]<<" "<<b[i][2]<<" "<<b[i][3]<<endl;    //按顺序输出新数组每一行的第一、二、三列return 0;
}

训练:矩阵检测

给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。

你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。

"改变矩阵元素"的操作定义为0变成1或者1变成0。

【输入描述】第1行,一个整数n,表示矩阵的行列数

之后的n行为n行n列的矩阵

【输出描述】如果矩阵符合条件,则输出"yes!";

如果矩阵仅改变一个矩阵元素就能符合条件,则输出需要改变的元

素所在的行号和列号,以一个空格分开。如果不符合以上两条,输出“no!”。

【样例输入】

4

1 0 1 0

0 0 1 0

1 1 1 1

0 1 0 1

【样例输出】2 3

 

解析

寻找每一行中1的数量,如果这个数量是奇数的话就记录一下,并且把最后一行1的数量为奇数的行号记录下来。同样的对于列也执行这个操作。如果1的数量为奇数的行数或者列数超过1,就无法满足;一个都没有就直接满足条件;剩下的就是改变一个元素,找到那个不满足的行号和列号进行更改即可。

 

参考代码

#include<iostream>
using namespace std;
int main()
{int m,t[15][15],h,l,hs=0,ls=0,a=0,b=0;cin>>m;for(int i=1;i<=m;i++)for(int j=1;j<=m;j++)cin>>t[i][j];for(int i=1;i<=m;i++){a=0;//每行找1,到下一行清零for(int j=1;j<=m;j++)if(t[i][j]==1)a++;if(a%2==1){//如果1的数量是奇数hs++;//行数量增加h=i;//保存行下标}}for(int i=1;i<=m;i++){b=0;//每列找1,到下一列清零for(int j=1;j<=m;j++)if(t[j][i]==1)//按列查找元素b++;if(b%2==1){ls++;//列数量增加l=i;//保存列下标}}if(ls>1||hs>1)//行数或者列数超过1就不满足    cout<<"no!";else if(hs==0&&ls==0)  //都没有就满足cout<<"yes!";else  //剩下的就是需要修改保存的行下标和列下标位置元素cout<<h<<" "<<l;return 0;
}

从入门到算法,再到数据结构,查看全部文章请点击此处icon-default.png?t=N7T8http://www.bigbigli.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/34282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录——跳跃游戏Ⅱ(Leetcode 45)

题目链接 贪心 class Solution {public int jump(int[] nums) {if(nums.length 1){return 0;}int count 0;// 当前覆盖最远距离下标int curDistance 0;// 下一步覆盖距离最远下标int nextDistance 0;for(int i 0; i < nums.length; i){nextDistance Math.max(nums[…

快速修复mfc100u.dll丢失解决方案

相连文章&#xff1a;SecureCRT的安装破解 [详细过程2024] 有小伙伴向我反馈在打开SecureFX注册机之后显示【mfc100u.dll找不到】重装之后也没有用&#xff0c;这个是因为Microsoft Visual C的运行时组件和库出现了错误&#xff0c;直接选择重新安装就可以 出现这种情况的原因…

高性能并行计算华为云实验五:PageRank算法实验

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建PageRank源码 3.2 makefile的创建和编译 3.3 主机配置文件建立与运行监测 四、实验结果与分析 4.1 采用默认的节点数量及迭代次数进行测试 4.2 分析并行化下节点数量与耗时的变化规律 4.3 分析迭代次数与耗时的变…

MySQL——联表查询JoinON详解

Join 对比&#xff08;7种&#xff09; 代码演示&#xff1a; -- 查询参加了考试的同学&#xff08;学号&#xff0c;姓名&#xff0c;科目编号&#xff0c;分数&#xff09; SELECT * FROM student SELECT * FROM result/* 1. 分析需求&#xff1a;分析查询的字段来自哪些表&…

spring原理篇

第三方bean默认为方法名 自动配置 自动配置的原理 springboot的自动配置原理 首先是从 SpringBootApplication这个注解出发 有一个ComponentScan()默认扫描同级包及其子包 第二个注解是springbootconfiguration 声明当前类是一个配置类 第三个是核心 enableAutoConfigurati…

通过看板系统管理工作流程:强调持续交付与可视化工作的全面指南

目录 前言1. 看板系统简介1.1 看板系统的基本原理1.2 看板系统的主要特点 2. 强调持续交付的重要性2.1 持续交付的优势2.2 持续交付的实施步骤 3. 可视化工作的核心价值3.1 提高透明度和可见性3.2 促进工作流程的优化3.3 增强团队的自我管理能力 4. 看板系统的实施指南4.1 初始…

vue-cli 搭建项目,ElementUI的搭建和使用

vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个vue的项目模板&#xff1b;预先定义 好的目录结构及基础代码&#xff0c;就好比咱们在创建Maven项目时可以选择创建一个 骨架项目&#xff0c;这个骨架项目就是脚手架&#xff0c;我们的开发更加的快速&#xff1b; …

在FlowUs息流,让知识库为你所用|如何打造个人知识库|如何打造企业知识库

&#x1f389; 在 FlowUs 的世界中&#xff0c;知识绽放出无限的可能&#xff01;&#x1f680; 在当今信息爆炸的时代&#xff0c;知识的更新换代速度极快&#xff0c;我们每天都面临着海量的信息冲击。拥有一个属于自己的知识库变得至关重要。 首先&#xff0c;打造自己的知…

【PB案例学习笔记】-24创建一个窗口图形菜单

写在前面 这是PB案例学习笔记系列文章的第24篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

免费APP分发平台:小猪APP分发如何解决开发者的痛点

你是否曾为自己开发的APP找不到合适的分发平台而烦恼&#xff1f;你是否因为高昂的分发费用而望而却步&#xff1f;放心吧&#xff0c;你并不是一个人。很多开发者都面临同样的问题。但别担心&#xff0c;小猪APP分发来了&#xff0c;它可以帮你解决这些问题。 小猪app封装www…

条件断点在找call中的应用

以TLBB为例&#xff0c;在2024.6.24附近左右的时间段&#xff0c;游戏窗口切换时就会有两个左右的call&#xff0c;在x64dbg下断点之后切换回游戏窗口&#xff0c;很难分辨出哪个是我们需要的动作引起的call&#xff0c;因此在send函数处下条件断点&#xff1a;$breakpointcoun…

数据库课程知识点总结

数据库概述 数据库基本特点&#xff1a;数据结构化&#xff0c;数据独立性&#xff0c;数据冗余小&#xff0c;易扩充&#xff0c;统一管理和控制&#xff0c;永久存储&#xff0c;有组织&#xff0c;可共享 三级模式 模式&#xff1a;一个数据库只有一个模式&#xff0c;是对…

秋招Java后端开发冲刺——关系型数据库篇(Mysql)

本文介绍关系型数据库及其代表Mysql数据库&#xff0c;并介常见面试题目。 一、数据库概述 1. 数据库&#xff08;Database, DB&#xff09;&#xff1a;是长期储存在计算机内的、有组织的、可共享的数据集合。 2. 数据库管理系统&#xff08;Database Management System, D…

服务器数据恢复—异常断电导致RAID6阵列中磁盘出现坏扇区的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台存储中有一组由12块SAS硬盘组建的RAID6磁盘阵列&#xff0c;划分为一个卷&#xff0c;分配给几台Vmware ESXI主机做共享存储。该卷中存放了大量Windows虚拟机&#xff0c;这些虚拟机系统盘是统一大小&#xff0c;数据盘大小不确定&…

【Linux】静态库、动态库

动静态库里面包含的是源文件通过汇编阶段生成的后缀为.o的可重定位目标文件。我们在使用C语言&#xff0c;包含一个stdio.h头文件就可以使用scanf方法&#xff0c;其实都是系统调用了相应的头文件和库&#xff0c;库里面有开发者已经写好各种方法。也就是说我们在使用C语言时&a…

RabbitMQ实践——Stream队列的使用方法

大纲 什么是Stream队列创建Stream发布消息消费从第一条消息开始读取从最后一条消息开始读取从某个时间戳开始读取从某个偏移量开始读取 样例长度控制长度控制时间控制服务端筛选消息发布方设定过滤值消费方设置服务端过滤&#xff0c;且要二次过滤 工程代码参考资料 在 《Rabb…

Lua网站开发之文件表单上传

这个代码示例演示如何上传文件或图片&#xff0c;获取上传信息及保存文件到本地。 local fw require("fastweb") local request require("fastweb.request") local response require("fastweb.response") local cjson require("cjson&q…

wps的domain转为shp矢量

wps的namelist制作、python出图和转矢量 简介 wps&#xff08;WRF Preprocessing System&#xff09;是中尺度数值天气预报系统WRF(Weather Research and Forecasting)的预处理系统。 wps的安装地址在GitHub上&#xff1a;https://github.com/wrf-model/WPS 下载完成后&…

巴中市红色旅游地管理系统

摘 要 随着红色旅游的兴起&#xff0c;越来越多的人开始对巴中市的红色旅游地产生兴趣。巴中市作为中国革命的重要发源地之一&#xff0c;具有丰富的红色旅游资源。然而&#xff0c;目前巴中市红色旅游地的管理仍然存在许多问题&#xff0c;如信息不对称、资源利用效率低等。为…

Robust semi-supervised segmentationwith timestep ensembling diffusion models

时间步合成扩散模型的鲁棒半监督分割 摘要 医学图像分割是一项具有挑战性的任务&#xff0c;由于许多数据集的大小和注释的限制&#xff0c;使得分割更加困难。消噪扩散概率模型(DDPM)最近在模拟自然图像的分布方面显示出前景&#xff0c;并成功地应用于各种医学成像任务。这…