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" ...
随机推荐
- Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]
在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出.灰常感谢!!! 一. ...
- ie7下 滚动条内容不动问题
ie7+ 版式正常 ie7滚动内容不跟着动 解决方法 加上 overflow-x: hidden; overflow-y: auto; *position:relative; *le ...
- ERP部门的添加(十一)
功能需求: 1.有部门管理权限的人员进行添加部门基本信息. 2.有部门权限管理的人员查询部门基本信息. 3.有部门权限管理的人员进行修改部门基本信息. 4.在一个页面中实现,使用弹出对话框方式 存储过 ...
- FSM
一.状态机简单介绍 软件设计中的状态机概念,一般是指有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和 ...
- MVC 构造新Model实现内容搜索
当前在使用MVC开发一个网站,习惯了使用ASP.NET中控件,转到MVC之后突然对于页面和后台代码的传值感觉无从下手.花了点时间在网上看了写帖子后,想到了一个方法,重新构造一个新Model, 然后利用 ...
- magento -- 如何为商品分类(category)添加自定义属性
在magento 中,由于使用了强大的EAV设计方法,我们可以很方便的给商品添加任意数量的属性.然而magento 没有给我们提供给商品分类添 加属性的功能.尽管我们知道magento所采用的EAV设 ...
- 《你不知道的JavaScript》第二部分:this 详解
第1章 关于this this 是自动定义在所有函数的作用域中的关键字,用于引用合适的上下文对象. ☞ 为什么要使用 this ? this 提供了一种更优雅的方式来隐式"传递"一 ...
- jsb游戏闪退 ScriptingScore::executeFunctionWithOwner 出错
Assertion failure: thing, at...gc/Marking.cpp:112 遇到个jsb的bug,全公司的人整整折腾了2天!! 描述: 下面代码,在GC后,程序崩溃,错误log ...
- find 和 locate 命令
一, find 命令 find 命令有三部分构成 1,你要搜索的目录 (. 当前目录, ~家目录, /根目录). 2,你的搜索条件. 3,搜索到后要执行的动作. 常用命令: 1, find . -na ...
- [转]C语言文件操作
1,两种文件存取方式(输入,输出方式) 顺序存取 直接存取 2,数据的两种存放形式 文本文件 二进制文件 13.2文件指针 定义文件类型指针变量的一般形式: FILE *指针变量名; 例如: FILE ...