OpenJudge计算概论-计算鞍点
/*========================================================================
计算鞍点
总时间限制: 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计算概论-计算鞍点的更多相关文章
- OpenJudge计算概论-计算书费
/*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...
- Openjudge计算概论-计算矩阵边缘元素之和
/*======================================================================== 计算矩阵边缘元素之和 总时间限制: 1000ms ...
- OpenJudge计算概论-计算三角形面积【海伦公式】
/*============================================== 计算三角形面积 总时间限制: 1000ms 内存限制: 65536kB 描述 平面上有一个三角形,它的 ...
- OpenJudge计算概论-取石子游戏
OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...
- Openjudge计算概论——数组逆序重放【递归练习】
/*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...
- OpenJudge计算概论-最高的分数
/*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...
- 计算概论(A)/基础编程练习(数据成分)/3:整数的个数
#include<stdio.h> int main() { ] = {}; // 输入k个正整数 scanf("%d",&k); // 循环读入和进行算术 w ...
- 计算概论(A)/基础编程练习(数据成分)/2:奥运奖牌计数
#include<stdio.h> int main() { // n天的决赛项目 int n; scanf("%d",&n); ] = {}; while ( ...
- 计算概论(A)/基础编程练习(数据成分)/1:短信计费
#include<stdio.h> int main() { // 输入当月发送短信的总次数n和每次短信的字数words int n,words; scanf("%d" ...
随机推荐
- LeetCode----Unique Binary Search Trees 2
Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...
- JAVA嵌套循环
Java语言中的各种循环.选择.中断语句和C/C++一般无二. 选择结构 循环结构 中断(跳转) if for return if else while break if elseif do whil ...
- css3 动画贝塞尔曲线
http://cubic-bezier.com/#.17,.67,.83,.67 缓动函数速查表: http://www.xuanfengge.com/easeing/easeing/ Ceaser: ...
- HDU 5784 (计算几何)
Problem How Many Triangles (HDU 5784) 题目大意 给定平面上的n个点(n<2000),询问可以组成多少个锐角三角形. 解题分析 直接统计锐角三角形较困难,考虑 ...
- HDU 5047
http://acm.hdu.edu.cn/showproblem.php?pid=5047 直到看到题解,我才知道这道题考的是什么 首先交点数是Σ(16*i),区域区分的公式是 边数+点数+1=分成 ...
- 【转】Yeoman:Web 应用开发流程与工具
原文转自:http://blog.jobbole.com/62098/ 随着 Web 2.0 和 HTML 5 的流行,现在的 Web 应用所能提供的功能和交互能力比之前传统的 Web 应用要强大很多 ...
- Runtime 、 Block
1 使用Block方式,对学生对象进行排序. 1.1 问题 在iOS4.0+ 和Mac OS X 10.6+ 中添加了Block概念,以对C语言进行扩展.在Block中可以定义参数列表.返回类型,还可 ...
- LeetCode Longest Increasing Subsequence (LIS O(nlogn))
题意: 给一个数组,求严格递增的最长递增子序列的长度. 思路: 开销是一个额外的O(n)的数组.lower_bound(begin,end,val)的功能是:返回第一个大于等于val的地址. clas ...
- Qt之qSetMessagePattern
简述 改变默认的消息处理输出. 允许改变qDebug().qWarning().qCritical().qFatal()的输出. 简述 占位符 示例 qSetMessagePattern QT_MES ...
- jellyfish K-mer analysis and genome size estimate
http://www.cbcb.umd.edu/software/jellyfish/ http://www.genome.umd.edu/jellyfish.html https://githu ...