OpenJudge计算概论-计算鞍点

简介: /*======================================================================== 计算鞍点 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个二维 (5*5)数组,每行只有一个最大值,每列只有一个最小值。
/*========================================================================
计算鞍点
总时间限制:    1000ms  内存限制:    65536kB
描述
    输入一个二维 (5*5)数组,每行只有一个最大值,每列只有一个最小值。
    如果存在鞍点,则输出鞍点所在的位置(行和列),不存在鞍点时,要输出“not found”。
    鞍点指的是数组中的一个元素,它是所在行的最大值,并且是所在列的最小值。
    例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。
    11 3 5 6 9
    12 4 7 8 10
    10 5 6 9 11
    8 6 4 7 2
    15 10 11 20 25
输入
    输入包含一个5行5列的矩阵
输出
    如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found"
样例输入

    11 3 5 6 9
    12 4 7 8 10
    10 5 6 9 11
    8  6 4 7 2
    15 10 11 20 25
样例输出
    4 1 8
==========================================================================*/

 

#include<stdio.h>
#define maxN  50
#define maxM  50
int main()
{
    int n,m,i,j,k;
    int a[maxN][maxM]={0};
    int max,x,y;
    int flag;
    freopen("5.in","r",stdin);
    n=5;
    m=5;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<n;i++)
    {
        max=a[i][0];//假定行的第一个元素是该行最大值 
        x=i;//记录最大值所在的行列坐标 
        y=0;
        for(j=1;j<m;j++)//寻找行的最大值 
        {
            if(a[i][j]>max)
            {
                max=a[i][j];
                y=j;
            }
        }
        flag=1;
        for(k=0;k<n;k++)//检测刚刚找到行最大值max是否是其所在的第y列的最小值 
        {
            if(a[k][y]<max)
            {
                flag=0;//flag为0表示max不是第y列的最小值 
                break;
            }
        }
        if(flag==1)//flag为1表示max是第y列的最小值,即找到了鞍点,可以输出了  
        {
            printf("%d %d %d\n",x+1,y+1,max);
            break;//最多只有一个鞍点,所以可以结束查找鞍点的工作了 
        }
    }
    if(flag==0)//假如刚才没找到鞍点,说明该数组不存在鞍点。 
        printf("not found\n");
    return 0;
}

 

 

 1 #include <stdio.h>
 2 #define maxN 5
 3 struct obj
 4 {
 5     int maxOrMinNumber;
 6     int index;
 7 };
 8 int main(int argc, char *argv[])
 9 {
10     int n=maxN,i,j,t;
11     struct obj rowMaxIndex[maxN];
12     struct obj colMinIndex[maxN];
13     int k,flag;
14     
15     for(i=0;i<maxN;i++)
16     {
17         rowMaxIndex[i].index=0;
18         colMinIndex[i].index=0;
19     }
20     for(i=0;i<maxN;i++)
21     {
22         for(j=0;j<maxN;j++)
23         {
24             scanf("%d",&t); //输入a[i][j] 
25             if(j==0)  // 更新第i行最大值和最大值所在列下标 
26             {
27                 rowMaxIndex[i].maxOrMinNumber=t;
28                 rowMaxIndex[i].index=0;
29             }
30             else if(t>rowMaxIndex[i].maxOrMinNumber)
31             {
32                 rowMaxIndex[i].maxOrMinNumber=t;
33                 rowMaxIndex[i].index=j;
34             }
35             
36             if(i==0)//更新第j列最小值和最小值所在行的下标 
37             {
38                 colMinIndex[j].maxOrMinNumber=t;
39                 colMinIndex[j].index=0;
40             }
41             else if(t<colMinIndex[j].maxOrMinNumber)
42             {
43                 colMinIndex[j].maxOrMinNumber=t;
44                 colMinIndex[j].index=i;
45             }
46         }
47     }
48     
49     flag=0;
50     for(i=0;i<maxN;i++)
51     {
52         k=rowMaxIndex[i].index;//第i行最大值的列下标 
53         if(colMinIndex[k].index==i)
54         {
55             printf("%d %d %d\n",i+1,k+1,rowMaxIndex[i].maxOrMinNumber);
56             flag=1;
57             break;
58         }
59     }
60     if(flag==0) printf("not found\n");
61     return 0;
62 }
View Code

 

 

 

 

相关文章
|
算法
数理逻辑之 horn公式
Horn公式,中文名一般翻译成“霍恩公式”,也是范式的一种。 Horn原子有三: P::= ┴ | T |p Horn原子  分别是底公式、顶公式和命题原子。   Horn原子合取后的蕴含称为Horn字句: A::= P | PΛA C::= A → P ...
2473 0
|
机器学习/深度学习 Windows
Openjudge计算概论-角谷猜想
/*===================================== 角谷猜想 总时间限制: 1000ms 内存限制: 65536kB 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。
925 0
|
存储 Java
Openjudge计算概论-DNA排序
/*===================================== DNA排序 总时间限制: 1000ms 内存限制: 65536kB 描述 给出一系列基因序列,由A,C,G,T四种字符组成。
983 0
|
存储 人工智能 算法
Openjudge计算概论-求序列中的众数
/*===================================== 求序列中的众数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个长度为N的整数序列 (不多于128个整数),每个整数的范围在[-10^52,10^52],计算这个序列的众数。
1026 0
|
机器学习/深度学习 人工智能
OpenJudge计算概论-矩阵归零消减序列和
矩阵归零消减序列和 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个n*n的矩阵(3 1;x--) 24 { 25 //行的归零 26 for(i=0;i
1090 0
|
人工智能
OpenJudge计算概论-寻找山顶
/*===================================== 寻找山顶 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个m×n的山地上,已知每个地块的平均高程,请求出所有山顶所在的地块(所谓山顶,就是其地块平均高程不比其上下左右相邻的四个地块每个地块的平均高程小的地方)。
859 0
|
ice
OpenJudge计算概论-文字排版
/*====================================================================== 文字排版 总时间限制: 1000ms 内存限制: 65536kB 描述 给一段英文短文,单词之间以空格分隔(每个单词应包括其前后紧邻的标点符号)。
861 0
|
人工智能 算法 Java
OpenJudge计算概论-计算书费
/*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算概论 28.9 元/本 数据结构与算法 32.7 元/本 数字逻辑 45.6元/本 C++程序设计教程 78 元/本 人工智能 35 元/本 计算机体系结构 86.2 元/本 编译原理 27.8元/本 操作系统 43 元/本 计算机网络 56 元/本 JAVA程序设计 65 元/本 给定每种图书购买的数量,编程计算应付的总费用。
1242 0
OpenJudge计算概论-计算三角形面积【海伦公式】
/*============================================== 计算三角形面积 总时间限制: 1000ms 内存限制: 65536kB 描述 平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少。
1304 0
|
C++ CDN 机器学习/深度学习
OpenJudge计算概论-完美立方【暂时就想到了枚举法了】
/*===================================== 完美立方 总时间限制: 1000ms 内存限制: 65536kB 描述 a的立方 = b的立方 + c的立方 + d的立方为完美立方等式。
849 0