CE8.【C++ Cont】练习题组6

目录

1.矩阵转置

题目描述

输入格式

输出格式

输入输出样例

错误代码

提交结果

正确代码

提交结果

2.图像相似度

题目描述

输入格式

输出格式

输入输出样例

代码

提交结果

3. 计算矩阵边缘元素之和

题目描述

输入格式

输出格式

输入输出样例

说明/提示

方法1

代码

提交结果

错误排查

正确代码

提交结果

其他写法(推荐)


1.矩阵转置

https://www.luogu.com.cn/problem/B2106

题目描述

输入一个 n 行 m 列的矩阵 A,输出它的转置 A^T

输入格式

第一行包含两个整数 n 和 m,表示矩阵 A 的行数和列数。1≤n≤100,1≤m≤100。

接下来 n 行,每行 m 个整数,表示矩阵 A 的元素。相邻两个整数之间用单个空格隔开,每个元素均在 1∼1000 之间。

输出格式

m 行,每行 n 个整数,为矩阵 A 的转置。相邻两个整数之间用单个空格隔开。

输入输出样例

输入 #1

3 3
1 2 3
4 5 6
7 8 9

输出 #1

1 4 7
2 5 8
3 6 9

错误代码

#include <iostream>
using namespace std;
int main()
{int m,n;int arr[100][100];cin>>m>>n;for (int i=0;i<m;i++){for (int j=0;j<n;j++)cin>>arr[i][j];}for (int i=0;i<m;i++){for (int j=0;j<n;j++)cout<<arr[j][i]<<' ';cout<<"\n";}return 0;
}

提交结果

错因:

只适合m==n(方阵)的情况,而且内循环和外循环的循环变量的最大值没有交换

正确代码

#include <iostream>
using namespace std;
int main()
{int m,n;int arr[100][100];cin>>m>>n;for (int i=0;i<m;i++){for (int j=0;j<n;j++)cin>>arr[i][j];}for (int j=0;j<n;j++){for (int i=0;i<m;i++)cout<<arr[i][j]<<' ';cout<<"\n";}return 0;
}

提交结果

2.图像相似度

https://www.luogu.com.cn/problem/B2103

题目描述

给出两幅相同大小的黑白图像(用 0−1 矩阵)表示,求它们的相似度。

说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。

输入格式

第一行包含两个整数 m 和 n,表示图像的行数和列数,中间用单个空格隔开。1≤m≤100,1≤n≤100。

之后 m 行,每行 n 个整数 0 或 1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。

之后 m 行,每行 n 个整数 0 或 1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。

输出格式

一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。

输入输出样例

输入 #1

3 3
1 0 1
0 0 1
1 1 0
1 1 0
0 0 1
0 0 1

输出 #1

44.44

代码

这段代码在算法上毫无问题,但测试用例全都没有通过

#include <iostream>
using namespace std;
int main()
{short img1[100][100];short img2[100][100];short m,n,tmp;cin>>m>>n; for (short i=0;i<m;i++){for (short j=0;j<n;j++)cin>>img1[i][j]; }for (short i=0;i<m;i++){for (short j=0;j<n;j++)cin>>img2[i][j]; }for (short i=0;i<m;i++){for (short j=0;j<n;j++)if (img1[i][j]==img2[i][j])tmp++; }printf("%.2f",100.0*tmp/(m*n));return 0;
}

注意tmp为未初始化的局部变量(随机值!!!),将tmp赋初值为0即可解决问题

提交结果

3. 计算矩阵边缘元素之和

https://www.luogu.com.cn/problem/B2101

题目描述

输入一个整数矩阵,计算位于矩阵边缘的元素之和。

所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。

输入格式

第 1 行包含两个整数,分别为行数 m 和列数 n,两个整数之间空格隔开。

第 2 行开始有 m 行数据,每行包含 n 个整数,整数之间空格隔开。

输出格式

对应矩阵的边缘元素和。

输入输出样例

输入 #1

3 3
3 4 1
3 7 1
2 0 1

输出 #1

15

说明/提示

1≤m,n≤100。保证答案在 int 范围内。

方法1

将边缘的元素分为两部分去算

例如下图4*5的矩阵

代码

#include <iostream>
using namespace std;
int main()
{int m,n,sum=0;int arr[100][100];cin>>m>>n;for (int i=0;i<m;i++){for (int j=0;j<n;j++)cin>>arr[i][j];}for (int j=0;j<n;j++){sum+=arr[0][j]+arr[m-1][j];}for (int i=1;i<m-1;i++){sum+=arr[i][0]+arr[i][n-1];}cout<<sum;return 0;
}
提交结果

错误排查

考虑特殊情况:那就是当矩阵的行数或列数为 1 时的情况 所以需要加上特殊判断

当矩阵只有1列或只有1行时,sum的值是错误的,可以推导出程序加了两倍的矩阵,因此当m==1或n==1,算出的sum要除以2

正确代码
#include <iostream>
using namespace std;
int main()
{int m, n, sum = 0;int arr[100][100];cin >> m >> n;for (int i = 0; i < m; i++){for (int j = 0; j < n; j++)cin >> arr[i][j];}for (int j = 0; j < n; j++){sum += arr[0][j] + arr[m - 1][j];}for (int i = 1; i < m - 1; i++){sum += arr[i][0] + arr[i][n - 1];}if (m == 1 || n==1){cout << sum / 2;return 0;}cout << sum;return 0;
}
提交结果

其他写法(推荐)

边缘元素的坐标特点:对于m*n的矩阵,横坐标和纵坐标总是满足以下四种情况

1.横坐标为0,纵坐标在0~n-1之间

2.横坐标为m-1,纵坐标在0~n-1之间

3.纵坐标为0,横坐标在0~m-1之间

4.纵坐标为n-1,横坐标在0~m-1之间

因此可以写出核心处理代码:对数组的每个元素都遍历一次这样就不会出现重复统计的情况

for (i = 0; i < m; i++)
{for (j = 0; j < n; j++){cin >> x;//四个条件满足其一即可if (i == 0 || i == m - 1 || j == 0 || j == n - 1)sum += x;}
}

此种写法不用为数组开辟空间,只通过i和j的值来判断是否要加到sum里

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

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

相关文章

哪个网页版思维导图好用?这5款高效软件不容错过!

眼下虽然每个人的电脑硬盘越来越大&#xff0c;但很多人还是保留着“能不装软件就不装”的理念&#xff0c;在选择办公软件时&#xff0c;会更倾向于选用推出了网页版的软件&#xff0c;这对思维导图来说也不例外。 那具体到思维导图网页版&#xff0c;有哪些软件值得推荐&…

【双指针算法】--复写零

文章目录 1. 题目2. 题目解析3. 代码 1. 题目 在线oj 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改&a…

石岩基督教福音堂

周末娃&#xff0c;娃的阿婆和我一起去石岩基督教福音堂做礼拜。 这是我第一次进入石岩的教堂。教堂很高。应该有3,4层楼高。 这周末做礼拜的人很多一楼人满了&#xff0c;阿婆去二楼做礼拜&#xff0c;娃和我去三楼的儿童室。很多家长楼下做礼拜&#xff0c;小朋友被安排三楼…

Flutter 异步编程简述

1、isolate 机制 1.1 基本使用 Dart 是基于单线程模型的语言。但是在开发当中我们经常会进行耗时操作比如网络请求&#xff0c;这种耗时操作会堵塞我们的代码。因此 Dart 也有并发机制 —— isolate。APP 的启动入口main函数就是一个类似 Android 主线程的一个主 isolate。与…

IDEA用jformdesigner插件做管理系统MVC架构

在 IntelliJ IDEA 中结合 JFormDesigner 插件&#xff0c;通过 Swing 框架实现一个管理系统的 MVC 架构是一种经典的开发方式。以下是具体的步骤和实现思路&#xff0c;包含从项目创建到 MVC 架构的核心代码实现。 1. 项目结构设计 为了清晰的 MVC 分层架构&#xff0c;建议按…

Linux内核调度优先级详解:如何优化你的系统性能

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; 进程优先级调度是操作系统中的一种调度机制&#xff0c;其核心是为每个进程分配一个 优先级&#xff08;Priority&#xff09;&#xff0c;然后根据优先级的高低决定进程执行的顺序和时间。这种机制确保了关…

Axure RP9 的详细安装及Axure入门应用

文章目录 一、Axure 是什么?二、Axure 的应用场景三、Axure 安装1. 下载安装2. 汉化授权 附&#xff1a;下载链接 一、Axure 是什么? 1、Axure 是一种强大的原型设计工具&#xff0c;它可以帮助设计师和产品经理快速创建交互式的、高保真度的原型&#xff0c;并进行用户体验…

pro文件转换为CMakeLists.txt文件,QT官方工具使用教程

某些情况需要使用cmake&#xff0c;如果手动将QT的pro文件转换成CMakeLists.txt&#xff0c;简短一点的pro还好&#xff0c;如果是比较复杂的pro&#xff0c;手动转换的时候需要长时间的debug&#xff0c;本人深有感受。 工具介绍&#xff1a; qmake2cmake工具创建一个CMakeL…

CDN信息收集(小迪网络安全笔记~

免责声明&#xff1a;本文章仅用于交流学习&#xff0c;因文章内容而产生的任何违法&未授权行为&#xff0c;与文章作者无关&#xff01;&#xff01;&#xff01; 附&#xff1a;完整笔记目录~ ps&#xff1a;本人小白&#xff0c;笔记均在个人理解基础上整理&#xff0c;…

深度学习实战车辆目标跟踪【bytetrack/deepsort】

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对车辆目标数据集进行训练和优化&#xff0c;该数据集包含丰富的车辆目标图像样本…

windows使用zip包安装MySQL

windows通过zip包安装MySQL windows通过zip包安装MySQL下载MySQL的zip安装包创建安装目录和数据目录解压zip安装包创建配置目录 etc 和 配置文件 my.ini安装MySQL进入解压后的bin目录执行命令初始化执行命令安装 验证安装查看服务已安装 启动MySQL查看服务运行情况修改密码创建…

Dots 常用操作

游戏中有多个蚂蚁群落&#xff0c;每个蚂蚁属于一个群落&#xff0c;如何设计数据结构&#xff1f; 方法1&#xff1a;为蚂蚁组件添加一个属性 ID&#xff0c;会造成逻辑中大量分支语句&#xff0c;如果分支语句逻辑不平衡可能带来 Job 调度问题&#xff0c;每个蚂蚁会有一份蚂…

Django 后端数据传给前端

Step 1 创建一个数据库 Step 2 在Django中点击数据库连接 Step 3 连接成功 Step 4 settings中找DATABASES Step 5 将数据库挂上面 将数据库引擎和数据库名改成自己的 Step 6 在_init_.py中加上数据库的支持语句 import pymysql pymysql.install_as_MySQLdb()Step7 简单创建两列…

BaseCTF_web_week3

复读机 输入的东西会在下方显示出来&#xff0c;wp说是简单的SSTI&#xff0c;这里来学习一下SSTI SSTI模板注入 根据My4n师傅的《超详细SSTI模板注入漏洞原理讲解_ssti注入-CSDN博客》写的 用户的输入返回时会经过一个模板渲染&#xff0c;SSTI漏洞就是用户插入了可以破坏模板…

SQL server学习09-数据库编程(上)

目录 一&#xff0c;了解T-SQL语言 1&#xff0c;常量&#xff08;标量值&#xff09; 2&#xff0c;变量 1&#xff09;局部变量 2&#xff09;全局变量 二&#xff0c;内置函数 1&#xff0c;字符串函数 2&#xff0c;数学函数 3&#xff0c;日期时间函数 4&#x…

CentOS7系统下部署tomcat,浏览器访问localhost:8080/

我这里以本地的VMware虚拟机创建的CentOS为例,来讲解部署tomcat的步骤,阿里云的服务器ECS部署只需设置下安全组规则即可,Centos内一样。 首先启动VM,输入密码进入centos,用xshell连接 2. 在家目录输入 cd /usr/local 进入local目录, 输入 mkdir java &#xff0c;创建java目录…

解析 Ingress-Nginx 故障:排查思路与方法

文章目录 一、什么是Ingress-Nginx二、故障排除1.1Ingress-Controller日志和事件检查 Ingress 资源事件检查 Nginx 配置检查使用的服务是否存在调试日志 1.2对 Kubernetes API 服务器的认证服务认证服务账户Kube-Config 1.3使用GDB和Nginx1.4在 Nginx 4.2.5 或其他版本&#xf…

蓝桥杯物联网开发板硬件组成

第一节 开发板简介 物联网设计与开发竞赛实训平台由蓝桥杯大赛技术支持单位北京四梯科技有限公司设计和生产&#xff0c;该产品可用于参加蓝桥杯物联网设计与开发赛道的竞赛实训或院校相关课程的 实践教学环节。 开发板基于STM32WLE5无线微控制器设计&#xff0c;芯片提供了25…

【实操之 图像处理与百度api-python版本】

1 cgg带你建个工程 如图 不然你的pip baidu-aip 用不了 先对图片进行一点处理 $ 灰度处理 $ 滤波处理 参考 import cv2 import os def preprocess_images(input_folder, output_folder):# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_fol…

【LuaFramework】LuaFramework_UGUI_V2框架学习

GitHub - jarjin/LuaFramework_UGUI_V2: 基于tolua的热更新框架V2 旧版本是Unity 5.0&#xff0c;这个是新版本支持更高版本的 导入工程后先清除wrap 然后重新生成wrap&#xff0c;你会发现有个报空null&#xff0c;框架的问题总结下所有的框架wrap相关报错问题和修复方法&…