c/c++:山顶元素

devtools/2024/10/21 7:30:55/

题目描述(题目链接)

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

输入格式

一个≥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/devtools/36978.html

相关文章

(数据结构)快速了解时间复杂度和空间复杂度

一、时间复杂度 当计算时间复杂度时&#xff0c;通常需要考虑算法中的循环次数、递归深度等因素。以下是一些常见时间复杂度的示例&#xff1a; O(1)&#xff1a;常数时间复杂度&#xff0c;表示算法的执行时间是固定的&#xff0c;与输入规模无关&#xff0c;比如直接访问数组…

高项第四版 十大管理及49个过程【背】作业分享

项目管理 1.十大管理【背】 包括&#xff08;口诀:范进整狗子&#xff08;沟质&#xff09; 才&#xff08;采&#xff09;干成疯子&#xff08;风资&#xff09;&#xff09;: &#xff08;1&#xff09;项目整合管理:识别、定义、组合、统一和协调各项目管理过程组的各个过…

【busybox记录】【shell指令】comm

目录 内容来源&#xff1a; 【GUN】【comm】指令介绍 【busybox】【comm】指令介绍 【linux】【comm】指令介绍 使用示例&#xff1a; 逐行比较两个排序后的文件 - 默认输出 逐行比较两个排序后的文件 - 如果一个文件的排序有问题&#xff0c;那么反错&#xff08;默认&…

探索淘宝API接口对接(属性规格丨sku价格丨详情图丨优惠券等):打造智能电商解决方案

一、引言 随着电子商务的快速发展&#xff0c;越来越多的企业和开发者希望通过自动化和智能化的方式接入电商平台&#xff0c;以实现更高效的数据交互和业务流程。淘宝作为中国最大的电商平台之一&#xff0c;其提供的API接口成为了众多企业和开发者关注的焦点。本文将探讨淘宝…

VBA Excel工作表重命名

Excel工作表重命名,你是否还在一个个的手动修改,学会VBA代码,快速批量重命名工作表。 https://mp.weixin.qq.com/s?__biz=MzkwMzY1OTIzOA==&mid=2247483703&idx=1&sn=42f7ee90c52c9f149a80a6d3bd0af0a8&chksm=c093aabef7e423a85ad193ffa00c77a6115676eac9…

vue2初始化项目环境后运行报错: code: ‘MODULE_NOT_FOUND‘, requireStack: []

尝试1&#xff1a; 方式&#xff1a;npm install 重新安装依赖 结果&#xff1a;无效 尝试2&#xff1a; 方式&#xff1a;参照这篇博客对node_modules文件下.bin中的vue-cli-service.cmd内容进行修改 结果&#xff1a;有效 尝试3&#xff1a; 方式&#xff1a;突然意识…

绘画作品3d数字云展厅提升大众的艺术鉴赏和欣赏能力

3D虚拟展厅作为未来艺术的展示途径&#xff0c;正逐渐成为文化创意产业蓬勃发展的重要引擎。这一创新形式不仅打破了传统艺术展览的局限性&#xff0c;更以其独特的魅力吸引着全球观众的目光。 3D虚拟艺术品展厅以其独特的魅力&#xff0c;助力提升大众的艺术鉴赏和欣赏能力。观…

在QEMU上运行OpenSBI+Linux+Rootfs

在QEMU上运行OpenSBILinuxRootfs 1 编译QEMU2 安装交叉编译工具3 编译OpenSBI4 编译Linux5 创建根文件系统5.1 编译busybox5.2 创建目录结构5.3 制作文件系统镜像5.3.1 创建 ext2 文件5.3.2 将目录结构拷贝进 ext2 文件5.3.3 取消挂载 6 运行OpenSBILinuxRootfs 本文所使用的版…