#include<stdio.h>
int main()
{
int b[5][4]={{3,4,5,9},{6,5,1,3},{7,8,2,1},{5,6,7,9},{1,3,2,1}};
int i,j,flag1=0,flag2,p,q;
for(i=0;i<=4;i++)
{
for(j=0;j<=3;j++)
{
if(b[i][0]<b[i][j])
b[i][0]=b[i][j];
p=i;
q=j;
flag1=1;
}
if(flag1)
{
for(i=0;i<=4;i++)
{
if(b[p][q]>b[i][p])
{
flag2=0;
break;
}
else
flag2=1;
}
}
if(flag2)
printf("(%d %d)",p,q);
}
if(flag1==0||flag2==0)
printf("not found");
return 0;
}
/* Note:Your
choice is C IDE */
#include "stdio.h"
void main()
{
/*
鞍点:
1.该位置上的元素在该行最大;
2.该位置上的元素在该列最小,也可能没有;
*/
int a[][4]={
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10,11,12},
{13,14,15,16}
};
int i,j,min,max,t=0,t2=0;
//打印数组
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
for(i=0;i<4;i++) //行
{
t=0;
max=a[i][0];//初始值
for(j=1;j<4;j++) //求当前行的最大值
{
if(max<a[i][j]){
max = a[i][j];
t = j;//最大值所在的列
}
}
t2=i;//临时保存
min=a[0][t]; //求当前列的最小值
//求第t列的最小值
for(j=0;j<4;j++) //j代表行;
{
if(min>a[j][t])
{
min=a[j][t];
t2=j;
}
}
if(i==t2){//同一行,同一列
printf("%d行的第%d列的%d是鞍点",t2+1,t+1,a[t2][t]);
}
}
}
具体问题是什么...
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html