287 马鞍点

这篇具有很好参考价值的文章主要介绍了287 马鞍点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目2:求矩阵中的马鞍点

问题描述

所设计的程序能够通过编译。若矩阵    中的某个元素    是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。编写程序求出矩阵中的所有马鞍点。

输入格式

        首先输入两个整数n和m,为矩阵维数,然后输入矩阵的值。

输出格式

        输出矩阵中的所有马鞍点,输出顺序:行序优先,按行、列序号递增顺序输出。

    ,若有多个马鞍点,每个马鞍点一行。也可能没有马鞍点,则输出NO。

样例输入

        4 4

2 7 9 10

1 0 7 12

8 23 13 15

4 6 12 18

样例输出

        3 1 8

 

思路/分析:

1、比较第i行中所有元素,找到第一个最小值a[i][j](可能不止一个)。验证它是否是j列最大的,如果是的话输出;如果不是的话,找到第二个,验证其是否是当列最大的。直到第i行的最小值全部被遍历完。

2、遍历i行。

 

实操:设置了两个辅助数组,用来记录每行或每列的最大或最小值。果然方便了很多

(依稀记得今年1月做过这个题,也是这个想法。但是过年在老家电脑好像出了问题没做出来哎

 

注意点:第一次交上去五十,因为忘记了输出NO的情况。

 1 #include<stdio.h>
 2 #include<bits/stdc++.h>
 3 
 4 int main()
 5 {
 6     int n,m;
 7     scanf("%d %d",&n,&m);
 8     
 9     int array[n][m];
10     int flag=0;//judge whether the dot exists
11     int i,j;
12     int imin[n]={0},jmax[m]={0};//assist-array,record the max/min
13     
14     
15     for(i=0;i<n;i++)
16     {
17         for(j=0;j<m;j++)
18         {
19             scanf("%d",&array[i][j]);
20             if(j==0) imin[i]=array[i][j];
21             
22             if(imin[i]>array[i][j]) imin[i]=array[i][j];
23             if(jmax[j]<array[i][j]) jmax[j]=array[i][j];
24         }
25     }
26     
27     for(i=0;i<n;i++)
28     {
29         for(j=0;j<m;j++)
30         {
31             if(array[i][j]==imin[i]&&array[i][j]==jmax[j])
32             {
33                 flag=1;
34                 printf("%d %d %d\n",i+1,j+1,array[i][j]);
35             }
36         }
37     }
38     if(flag==0) printf("NO\n");
39     return 0;
40 }

 文章来源地址https://www.toymoban.com/news/detail-746783.html

到了这里,关于287 马鞍点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【问题描述】读入一个正整数n(1<=n<=6),再读入n 阶矩阵a,计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和(副对角线为从矩阵的右上角至左下角的连线)。

    输入形式】 从键盘输入一个正整数n和n阶矩阵。 【输入输出样例1】(下划线部分表示输入) Input n:4 Input array: 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1 sum =35 【样例说明】 输入提示符后要加一个空格。例如Input n: ,其中:后要加一个且只能一个空格。 英文字母区分大小写。必须严格按样例输

    2023年04月25日
    浏览(27)
  • 详解Leetcode中关于malloc模拟开辟二维数组问题,涉及二维数组的题目所给函数中的各个参数的解读

    最近博主一直再刷Leetcode上有关c语言的题目,有些题目第一步就将我卡死了。为什么呢?因为题目中所给的函数里的参数的具体含义我既然都不知道是什么意思。当然在请教了一些大佬后我也顺利解决了,不然也不会有人和你们分享了,哈哈哈~ 我就已一个典型的题目来介绍

    2024年02月08日
    浏览(29)
  • 数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)

    目录 题目描述 输入示例 输出示例 解题思路  解题方法(C语言) 解析 有序的二叉树遍历可以用堆栈以非递归的方式实现。 例如: 假设遍历一个节点数为6的二叉树(节点数据分别为1到6)时, 堆栈操作为:push(1);push(2);push(3);pop();pop();push(4);pop()

    2024年02月07日
    浏览(36)
  • pytorch中的矩阵的转置问题

    我在我的pytorch专栏发布了一期pytorch入门之tensor,介绍了torch.tensor()的一些创建方式和常用方法,其中就有矩阵的转置方法----tensor.t()、tensor.transpose()和tensor.permute()。我只是用少量语言和代码介绍了这三种方法的用法,但其中的转置原理没有说清。今天咱们就来絮叨絮叨~ 相信

    2023年04月08日
    浏览(24)
  • 描述二次型矩阵求法及二次型矩阵正定性判定

    1.二次型的矩阵的求法: 二次型f(x,y,z)=ax²+by²+cz²+dxy+exz+fyz,用矩阵表示的时候,矩阵的元素与二次型系数的对应关系为:A11=a,A22=b,A33=c,A12=A21=d/2,A13=A31=e/2,A23=A32=f/2。  2.二次型矩阵正定性判定  已知二次型 判定是否正定。 利用霍尔维茨定理:称对角线元是A的前k个

    2024年02月03日
    浏览(33)
  • 13-把矩阵看作是对系统的描述

    引言 📖 在我们进一步探讨矩阵乘法之前,让我们从不同的角度来理解什么是矩阵,以及如何将矩阵视为一个系统。我们之前已经介绍了矩阵的基本概念和运算,接下来我们看矩阵的乘法,不过为了让大家能够更加深刻的理解什么是矩阵的乘法,这篇会首先向大家介绍我是如

    2024年02月13日
    浏览(29)
  • 题目:2319.判断矩阵是否是 X 矩阵

    ​​ 题目来源:         leetcode题目,网址:2319. 判断矩阵是否是一个 X 矩阵 - 力扣(LeetCode) 解题思路:        遍历矩阵,对于每一个节点,先判断是否处于主对角线或副对角线上,然后判断是否为0 。 解题代码: 总结:         官方题解也是一样的思路。

    2024年02月14日
    浏览(35)
  • 【算法设计与分析】求解矩阵最小路径和问题

    《算法设计与分析》的实验,稍微记录一下,欢迎讨论。 给定一个m行n列的矩阵,从左上角开始每次只能向右或者向下移动,最后到达右下角的位置,路径上的所有数字累加起来作为这条路径的路径和。编写一个实验程序求所有路径和中的最小路径和。例如,一下矩阵中的路

    2024年02月08日
    浏览(25)
  • 算法设计 || 第7题:TSP问题的成本矩阵

     看不懂可以观看这个老师视频学习:分支限界法(TSP问题,多段图的最短路径问题,任务分配问题,批处理作业调度问题)(算法设计第十周二节)_哔哩哔哩_bilibili     画出计算求解最优解的分支界限过程, 计算每个节点的C^(X)值。 一旦找到目标排列,再需要杀手的节点下面用B标记

    2024年02月10日
    浏览(32)
  • 【机器学习线性代数】03 再论矩阵:空间映射关系的描述

    目录 1.利用矩阵表示空间映射 2.矮胖矩阵对空间的降维压缩 2.1.空间降维的原理 2.2.实

    2024年03月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包