#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;
}

请问c语言找鞍点这样子为什么不行啊
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- CSDN专家-赖老师(软件之家) 2021-04-25 19:17关注
/* 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]);
}
}
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报