/*========================================================================
计算鞍点
总时间限制: 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]={};
int max,x,y;
int flag;
freopen("5.in","r",stdin);
n=;
m=;
for(i=;i<n;i++)
{
for(j=;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=;i<n;i++)
{
max=a[i][];//假定行的第一个元素是该行最大值
x=i;//记录最大值所在的行列坐标
y=;
for(j=;j<m;j++)//寻找行的最大值
{
if(a[i][j]>max)
{
max=a[i][j];
y=j;
}
}
flag=;
for(k=;k<n;k++)//检测刚刚找到行最大值max是否是其所在的第y列的最小值
{
if(a[k][y]<max)
{
flag=;//flag为0表示max不是第y列的最小值
break;
}
}
if(flag==)//flag为1表示max是第y列的最小值,即找到了鞍点,可以输出了
{
printf("%d %d %d\n",x+,y+,max);
break;//最多只有一个鞍点,所以可以结束查找鞍点的工作了
}
}
if(flag==)//假如刚才没找到鞍点,说明该数组不存在鞍点。
printf("not found\n");
return ;
}
 #include <stdio.h>
#define maxN 5
struct obj
{
int maxOrMinNumber;
int index;
};
int main(int argc, char *argv[])
{
int n=maxN,i,j,t;
struct obj rowMaxIndex[maxN];
struct obj colMinIndex[maxN];
int k,flag; for(i=;i<maxN;i++)
{
rowMaxIndex[i].index=;
colMinIndex[i].index=;
}
for(i=;i<maxN;i++)
{
for(j=;j<maxN;j++)
{
scanf("%d",&t); //输入a[i][j]
if(j==) // 更新第i行最大值和最大值所在列下标
{
rowMaxIndex[i].maxOrMinNumber=t;
rowMaxIndex[i].index=;
}
else if(t>rowMaxIndex[i].maxOrMinNumber)
{
rowMaxIndex[i].maxOrMinNumber=t;
rowMaxIndex[i].index=j;
} if(i==)//更新第j列最小值和最小值所在行的下标
{
colMinIndex[j].maxOrMinNumber=t;
colMinIndex[j].index=;
}
else if(t<colMinIndex[j].maxOrMinNumber)
{
colMinIndex[j].maxOrMinNumber=t;
colMinIndex[j].index=i;
}
}
} flag=;
for(i=;i<maxN;i++)
{
k=rowMaxIndex[i].index;//第i行最大值的列下标
if(colMinIndex[k].index==i)
{
printf("%d %d %d\n",i+,k+,rowMaxIndex[i].maxOrMinNumber);
flag=;
break;
}
}
if(flag==) printf("not found\n");
return ;
}

OpenJudge计算概论-计算鞍点的更多相关文章

  1. OpenJudge计算概论-计算书费

    /*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...

  2. Openjudge计算概论-计算矩阵边缘元素之和

    /*======================================================================== 计算矩阵边缘元素之和 总时间限制: 1000ms ...

  3. OpenJudge计算概论-计算三角形面积【海伦公式】

    /*============================================== 计算三角形面积 总时间限制: 1000ms 内存限制: 65536kB 描述 平面上有一个三角形,它的 ...

  4. OpenJudge计算概论-取石子游戏

    OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...

  5. Openjudge计算概论——数组逆序重放【递归练习】

    /*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...

  6. OpenJudge计算概论-最高的分数

    /*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...

  7. 计算概论(A)/基础编程练习(数据成分)/3:整数的个数

    #include<stdio.h> int main() { ] = {}; // 输入k个正整数 scanf("%d",&k); // 循环读入和进行算术 w ...

  8. 计算概论(A)/基础编程练习(数据成分)/2:奥运奖牌计数

    #include<stdio.h> int main() { // n天的决赛项目 int n; scanf("%d",&n); ] = {}; while ( ...

  9. 计算概论(A)/基础编程练习(数据成分)/1:短信计费

    #include<stdio.h> int main() { // 输入当月发送短信的总次数n和每次短信的字数words int n,words; scanf("%d" ...

随机推荐

  1. ubuntu系统安装mongodb

    安装mongodb sudo apt-get install mongodb ... ... 设置客户端连接 打开文件/etc/mongodb.conf  注意权限 修改 bind_ip=127.0. ...

  2. Newspaper Headline_set(upper_bound)

    Description A newspaper is published in Walrusland. Its heading is s1, it consists of lowercase Lati ...

  3. 直接用bat命令对Inno Setup的脚本文件.iss进行编译

    直接用bat命令对Inno Setup的脚本文件.iss进行编译 2010-06-17 15:17 qjn0059 | 浏览 2163 次 编程语言外语学习 分享到:   2010-06-29 11: ...

  4. 一步一步实现iOS应用PUSH功能

    1. push原理 iOS push 工作机制可以用下图简要概括 Provider:应用自己的服务器: APNS:Apple Push Notification Service的简称,苹果的PUSH服 ...

  5. python报错

    报错1 UnboundLocalError: local variable 'x' referenced before assignment 定义了一个全局参数,但是在函数中直接改变参数值,就会报这个 ...

  6. PAT (Basic Level) Practise:1013. 数素数

    [题目连接] 令Pi表示第i个素数.现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数. 输入格式: 输入在一行中给出M和N,其间以空格分隔. 输出格式: 输出从PM到 ...

  7. hdu 2665 Kth number

    划分树 /* HDU 2665 Kth number 划分树 */ #include<stdio.h> #include<iostream> #include<strin ...

  8. UI学习笔记---第一天

    一.iOS概述 iOS是Apple公司的移动操作系统,主要⽤用于iPhone.iPad.iPad Mini.iPod Touch等移动产品. 借助iOS,我们可以开发视频类.美图类.新闻类.⾳乐类.团 ...

  9. Xcode编译异常和警告汇总(持续更新中)

    1.Method definition for 'xxx' not found xxx的方法没有实现 出现原因.h声明了xxx方法但是.m没有实现xxx方法 解决方法:在类的.m文件实现xxx方法   ...

  10. Conference Search不错的学术会议日程提示网站

    一个不错的学术会议日程提示网站 http://www.confsearch.org,还可以通过内嵌框架(embedded iframe)集成到自己的网页上. http://www.confsearch ...