c/c++:山顶元素

news/2024/10/22 16:35:04/

题目描述(题目链接)

从键盘输入一个整型二维数组,遍历二维数组中的每个元素,如果此元素比其上下左右的数字都大,即为山顶元素。

输入格式

一个≥1的整数,表名是几行几列的二维数组,一个整型二维数组,数据之间都用空格分开。

输出格式

所有整型山顶元素,用空格分开。

输入输出样例

输入

5
15 39 5 15 18 
41 39 0 6 41
38 38 38 30 44
33 36 10 35 39
39 12 4 39 7

输出

41 44 39 39

说明/提示
如果输入的代表几行几列的整数≤0,输出此整数。

解题思路:

读题意,应该很容易想到深度优先遍历,从一个点对其上下左右进行遍历加以比较,注意下题目最后的说明/提示,意思是当n=0时,输出0

解题代码:

C代码:

#include<stdio.h>
#include<stdbool.h>//bool类型
int n;
int r[4]={0,0,1,-1};//左右
int c[4]={1,-1,0,0};//上下
bool fw(int row,int column)//判断是否在范围内
{return row>=0&&row<n&&column>=0&&column<n?true:false;
}
bool dfs(int a[n][n],int i,int j)
{int flag=1;for(int k=0;k<4;k++)//遍历上下左右的元素{int row=r[k]+i,column=c[k]+j;if(fw(row,column)){if(a[i][j]<=a[row][column]){flag=0;break;}}}return flag;
}
int main()
{scanf("%d",&n);if(n==0){printf("0");return 0;}int a[n][n];for(int i=0;i<n;i++)for(int j=0;j<n;j++)scanf("%d",&a[i][j]);for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(dfs(a,i,j))printf("%d ",a[i][j]);}return 0;
}

C++代码:
在C++中二维数组传参时,参数中的数组大小必须是常量,就不能像C那样随意这样a[n][n]当函数参数,除非是全局变量,全局变量也就没必要传参了

#include<bits/stdc++.h>
using namespace std;
int n;
int r[4]={0,0,1,-1};
int c[4]={1,-1,0,0};
bool fw(int row,int column)
{return row>=0&&row<n&&column>=0&&column<n?true:false;
}
bool dfs(int **a,int i,int j)//这里弄了个二级指针,还有些麻烦了
{int flag=1;for(int k=0;k<4;k++){int row=r[k]+i,column=c[k]+j;if(fw(row,column)){if(a[i][j]<=a[row][column]){flag=0;break;}}}return flag;
}
int main()
{cin>>n;if(n==0){cout<<0;return 0;}int **a=new int *[n];//二级指针的定义,我感觉还是有些麻烦的for (int i = 0; i < n; ++i) {a[i] = new int[n];}for(int i=0;i<n;i++)for(int j=0;j<n;j++)cin>>a[i][j];for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(dfs(a,i,j))cout<<a[i][j]<<" ";}return 0;
}

http://www.ppmy.cn/news/1457762.html

相关文章

Dropout作为贝叶斯近似: 表示深度学习中的模型不确定性

摘要 深度学习工具在应用机器学习领域受到了极大的关注。然而&#xff0c;这些用于回归和分类的工具并没有捕捉到模型的不确定性。相比之下&#xff0c;贝叶斯模型提供了一个基于数学的框架来推理模型的不确定性&#xff0c;但通常会带来令人望而却步的计算成本。本文提出了一…

【从零开始学习Minio | 第一篇】快速介绍什么是Minio

前言&#xff1a; 在当今数字化时代&#xff0c;数据的存储和管理已经成为了企业发展中的关键一环。随着数据量的不断增长和数据安全性的日益受到重视&#xff0c;传统的数据存储解决方案往往面临着诸多挑战。为了应对这些挑战&#xff0c;云存储技术应运而生&#xff0c;并在…

go Gin项目实战

Gin项目实战 Gin博客项目-项目架构Gin博客项目-集成gormGin博客项目-集成Bootstrap创建用户表单Gin 博客项目-实现控制器和路由Gin 博客项目-设计静态页面Gin 博客项目-用户注册Gin 博客项目-用户登录Gin 博客项目-集成markdown编辑器Gin 博客项目-创建博客模型和DAOGin 博客项…

Chrome命令大师:揭秘浏览器中的隐藏神器,提升你的上网效率!

Google Chrome是一款功能强大的浏览器&#xff0c;除了常规的网页浏览功能外&#xff0c;它还提供了许多实用的命令&#xff0c;可以帮助我们更高效地使用浏览器。本文将详细介绍一些常用的Chrome浏览器命令&#xff0c;包括它们的介绍、命令或语法、作用以及使用方法等。 打开…

【Ansiable】ansible的模块和主机清单

Ansible Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可以实现。 Ansible能批量配置、部署、管理上千台主机。比…

数据库数据恢复—Sql Server数据库文件丢失丢失怎么恢复数据?

数据库数据恢复环境&#xff1a; 5块硬盘组建一组RAID5阵列&#xff0c;划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库&#xff0c;存储空间在操作系统层面划分了三个逻辑分区。 数据库故障&#xff1a; 数据库文件丢失&#xff0c;主要涉及3个…

DDD架构理论详解

文章目录 一、概念入门1. 概念简介2. DDD的核心理念3. 范式4. 模型5. 框架6. 方法论7. 软件设计的主要活动 二、DDD核心理论1. Domain领域层都包含什么&#xff1f;2. 聚合、实体和值对象3. 仓储&#xff0c;封装持久化数据4. 适配&#xff08;端口&#xff09;&#xff0c;调用…

echarts学习笔记:柱状图+雷达图+双环形图+地图可视化+数据传递关系图+关键词条图+数据总览图+AntV/G2/DataV

GitHub - lgd8981289/imooc-visualization: https://www.bilibili.com/video/BV1yu411E7cm/?vd_source391a8dc379e0da60c77490e3221f097a 课程源码 国内echarts镜像站&#xff1a;ISQQW.COM x ECharts 文档&#xff08;国内同步镜像&#xff09; - 配置项 echarts图表集&…