/*========================================================================
计算鞍点
总时间限制: 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. 初次学习Linux需要注意的

    Linux系统可以说是最安全的了,世界500强里90%的公司使用的都是Linux系统,可见Linux的市场有多广阔.但是就像很多朋友说的那样,想学习Linux开发,不知如何开始学习,该怎么办?学习Li ...

  2. Camel routes in Spring config file

    The normal spring bean definition configuration file, the xsi:schemaLocation only has two: beans and ...

  3. HDOJ-三部曲-1015-The Cow Lexicon

    The Cow Lexicon Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) To ...

  4. Java 集合深入理解(7):ArrayList

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情有点美丽,学学 ArrayList 放松下吧! 什么是 ArrayList ArrayList 是 Java 集合 ...

  5. 破解 abexcrackme2

    系统 : Windows xp 程序 : abexcrackme2 程序下载地址 :http://pan.baidu.com/s/1qXhyt8C 要求 : 注册机编写 使用工具 : OD 可在“PE ...

  6. CodeForces 416D (贪心)

    Problem Population Size 题目大意 给一个长度为n的序列,由 -1 和正整数组成,-1表示任意的正整数. 将序列分成若干段,使得任意段都是等差数列,求最少段数. 解题分析 可以发 ...

  7. CODEVS1533 互斥的数(哈希表)

    给定一个集合,要求一个最大子集,满足两两之间不互斥.对两个数x,y互斥的定义是,y=p*x. 先对集合中的数从小到大排序后线性扫,若一个数x可以取则取,取完之后p*x这个数不可取.由于数字较大,使用哈 ...

  8. C# 控件聚焦

    /********************************************************************** * C# 控件聚焦 * 说明: * 做界面经常需要将ta ...

  9. 前端学习资源(js)

    JavaScript JavaScript | MDN JavaScript 秘密花园 JavaScript 标准参考教程(alpha) 给 JavaScript 初心者的 ES2015 实战 Col ...

  10. Tomcat9源码编译及导入Eclipse(转)

    1.下载tomcat源码.建议下载最新版本tomcat9. svn地址:http://svn.apache.org/repos/asf/tomcat/tc9.0.x/branches/gsoc-jas ...