/*========================================================================
计算鞍点
总时间限制: 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. android手机连接PC无法正常安装驱动

    工作当中我们经常会遇到Android手机连接PC的时候无法正确安装驱动,或者安装失败.当然找到正确的驱动文件时首选的解决方案,如果正确的驱动文件依旧无法安装成功我们可以打开我的电脑-->属性-- ...

  2. Yii2 GridView自定义链接之重写 ActionColumn

    最近刚开始用yii2,真是超棒的,但是也有许多不足的地方,今天要说的就是GridView链接问题.   <?= GridView::widget([ 'dataProvider' => $ ...

  3. ie7下 滚动条内容不动问题

    ie7+ 版式正常 ie7滚动内容不跟着动 解决方法 加上 overflow-x: hidden;    overflow-y: auto;    *position:relative;    *le ...

  4. Mac抓包工具Charles

    一.下载 先到它的官网http://www.charlesproxy.com/可下载到最新版本,这个下载有点慢,我已经将它放到网盘中了:http://pan.baidu.com/s/1gdu0S4V ...

  5. HDU 4971 (最小割)

    Problem A simple brute force problem (HDU 4971) 题目大意 有n个项目和m个问题,完成每个项目有对应收入,解决每个问题需要对应花费,给出每个项目需解决的问 ...

  6. HDU 5100

    http://acm.hdu.edu.cn/showproblem.php?pid=5100 用1*k方格覆盖n*n方格 有趣的一道题,查了下发现m67的博客还说过这个问题 其实就是两种摆法取个最大值 ...

  7. 求助 WPF ListViewItem样式问题

    求助 WPF ListViewItem样式问题 .NET 开发 > Windows Presentation Foundation Вопрос 0 Нужно войти <Style ...

  8. Ext.Net系列:一安装与使用

    http://www.cnblogs.com/howDo/archive/2011/04/27/2031084.html 下载地址:http://www.ext.net/download/ 示例地址: ...

  9. 四、CCSprite

    在介绍CCSprite之前,先要理解游戏开发中的一个核心概念:精灵.精灵也称为游戏对象,它可以用来表示游戏中的任何物体,比如敌人.子弹.甚至是一个背景图片.一段文字.CCSprite可以说是在coco ...

  10. Linux关机命令

    1.halt  :关机 init 0 : 关机 shutdown  -h  now (立刻关机)  -h 指的是  halt 2.reboot  重启 init 0 重启 shutdown -r no ...