首页 > 其他分享 >287 马鞍点

287 马鞍点

时间:2023-11-22 16:47:25浏览次数:31  
标签:输出 12 int 马鞍 矩阵 最小值 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 }

 

标签:输出,12,int,马鞍,矩阵,最小值,287
From: https://www.cnblogs.com/xzdmzrc221202/p/17847778.html

相关文章

  • luoguP3287 [SCOI2014] 方伯伯的玉米田
    题目描述方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美。这排玉米一共有NN株,它们的高度参差不齐。方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感的玉米拔除掉,使得剩下的玉米的高度构成一个单调不下降序列。方伯伯可以选择一个区间,把这......
  • 2287
    给你两个下标从 0 开始的字符串 s 和 target 。你可以从 s 取出一些字符并将其重排,得到若干新的字符串。从 s 中取出字符并重新排列,返回可以形成 target 的 最大 副本数。 示例1:输入:s="ilovecodingonleetcode",target="code"输出:2解释:对于"code"的......
  • 287. 寻找重复数
    给定一个包含n+1个整数的数组nums,其数字都在[1,n]范围内(包括1和n),可知至少存在一个重复的整数。假设nums只有一个重复的整数,返回这个重复的数。你设计的解决方案必须不修改数组nums且只用常量级O(1)的额外空间。示例1:输入:nums=[1,3,4,2,2]输出:2......
  • 【LC】2875. 无限数组的最短子数组
    Link题意见题链。思路自己没想出来。参考灵神题解取思路。自己写出来的。没有用滑动窗口用了前缀和。代码packagemainfuncminSizeSubarray(a[]int,targetint)int{ n:=len(a) vara2[]int a2=append(a2,a...) a2=append(a2,a...) prefixSums:=make(......
  • B. Amr and Pins( Codeforces Round #287 (Div. 2))
    #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>intmain(){doubler,x1,y1,x2,y2;while(scanf("%lf%lf%lf%lf%lf",&r,&x1,&y1,&x2,&y2)!=EOF){doubleaa=sq......
  • abc287F - Components
    F-Components一眼经典的树上背包\(f[x][s][0/1]\)表示在x的子树中有s个连通块,选不选x的方案数那么转移的话就是按照背包的转移即可然后隐约记得这个是\(O(n^2)\)的但是一直TLE,后面发现是有一个地方写法有问题,应该在计算完当前子树后再更新的size,这样可以保证复杂度。实际......
  • P3287 [SCOI2014] 方伯伯的玉米田
    首先每次选择的区间结尾都可以换成\(n\),仍然保持单调不降,我们就按这个策略拔高玉米。令\(f_{i,j}\)表示\(1\simi\)这段前缀进行了\(j\)次操作,第\(i\)株玉米不被拔掉,所能剩下最多的玉米数量:\[f_{i,j}=\max\{f_{p,q}|p<i,q<j,a_p+q\leqa_i+j\}+1\]枚举\(i\),剩下两个......
  • AtCoder Beginner Contest 287 - C (图论简单题)
    目录C-PathGraph?C-PathGraph?题意判断给定的无向简单图是不是一条链思路n个顶点m条边的无向图若为一条链,那么边数\(m=n-1\),n个顶点相互可达,任意一个顶点的度不超过2利用并查集判整体连通性,在建图时统计度数,最后判断即可由此,n个顶点,n-1条边的无向连通......
  • LeetCode 287. 寻找重复数
    classSolution{public:intfindDuplicate(vector<int>&nums){if(nums.size()<2)returnnums[0];intn=nums.size();intfast=0,slow=0;do{slow=nums[slow];fast=nums[fast......
  • linux系统报错:系统自己弹出诸如 kernel:NMI watchdog: BUG: soft lockup - CPU#2 stuc
    1、https://blog.csdn.net/weixin_41752389/article/details/120777145 内核软死锁(softlockup)Softlockup:这个bug没有让系统彻底死机,但是若干个进程(或者kernelthread)被锁死在了某个状态(一般在内核区域),很多情况下这个是由于内核锁的使用的问题。出现死锁原因1、CPU高负载时......