#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void main()
{
int column, row;//分别声明列 行
int i, j;
int k = 0, l = 0;
int rmax, cmin;//分别声明行最大 列最小
int a[100][100];
//初始化 行 和 列
printf("input row size(number of columns):");
scanf("%d", &row);
printf("input column size(number of rows):");
scanf("%d", &column);
//输入 行 和 列 中的元素
for (i = 0;i < row;i++)
{
printf("input the items of row%d:", i);
for (j = 0;j < column;j++)
{
scanf("%d", &a[i][j]);
}
}
//打印输入的数组元素
printf("the array you input is:\n");
for (i = 0; i < row; i++)
{
for (j = 0;j < column;j++)
printf("%d ", a[i][j]);
printf("\n");
}
//寻找该数组中的鞍点
for (i = 0;i < row;i++)
{
rmax = 0;
k = 0;
for (j = 0; j < column;j++)
{
if (rmax < a[i][j])
{
rmax = a[i][j];
k = j;
}
}
cmin = 0;
l = 0;
for (i = 0;i < row;i++)
{
if (cmin > a[i][k])
{
cmin = a[i][k];
l = i;
}
}
if (rmax == cmin)
{
printf("the saddle point is found!its position is a[% d][% d], and a[% d][% d] is % d ", l, k, l, k, rmax);
}
}
}
鞍点列子,参考一下。
#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,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632