1 条题解

  • 0
    @ 2025-8-24 21:07:19

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 墨忧
    摸鱼最快乐!

    搬运于2025-08-24 21:07:18,当前版本为作者最后更新于2021-07-04 16:19:11,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目大意

    给定一个矩阵,若矩阵的某一元素同时是其所在行的最大值和其所在列的最小值,则输出其的坐标和值。

    思路

    二维数组存矩阵,分别用两个数组 h[i]h[i]l[i]l[i] 来记录第 ii 行最大值所在的列和第 ii 列最大值所在的行,最后检查输出即可。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int a[10][10],h[10],l[10],maxh,minl;
    //a数组存矩阵,h、l含义见上文,maxh代表行的最大值,minl代表列的最小值 
    bool pd=true;
    int main()
    {
        for(int i=1;i<=5;i++)
            for(int j=1;j<=5;j++) cin>>a[i][j];
        for(int i=1;i<=5;i++)
        {
            maxh=-1;//重置最大值为-1 
            for(int j=1;j<=5;j++)
                if(a[i][j]>maxh)
                {
                    h[i]=j;//找到最大值所在的列 
                    maxh=a[i][j];
                }
        }
        for(int i=1;i<=5;i++)
        {
            minl=99999;//重置最小值为99999 
            for(int j=1;j<=5;j++)
                if(a[j][i]<minl)
                {
                    l[i]=j;//找到最小值所在的行 
                    minl=a[j][i];
                }
        }
        for(int i=1;i<=5;i++)
            if(i==l[h[i]])
            //对比是否有同时满足 行最大,列最小 
            {
                cout<<i<<" "<<h[i]<<" "<<a[i][h[i]];
                pd=false;
            }
        if(pd) cout<<"not found"<<endl;
        //若没有,则输出 "not found"
        return 0;
     } 
    
    • 1

    信息

    ID
    6959
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者