马鞍点,行最小,列最大的点
#include<iostream>
using namespace std;
typedef struct {
int x, y;
}ma_an;//存放马鞍点下标
int main()
{
ma_an m;
int n, a[100][100], i, j;
cin >> n;//数组阶数
for (int i = 0; i < n; i++)//输入数组
for (int j = 0; j < n; j++)
cin >> a[i][j];
for (int k = 0; k < n; k++) {//遍历每一列
for (i = 1; i < n; i++) {//每一列的最大值 a[m.x][m.y]
m.x = 0;
m.y = k;
if (a[m.x][m.y] < a[i][k])
m.x = i;
}
for (j = 0,i = 0; j < n; j++) {//遍历每一行,判断该列最大值在所处的行是否为最小值
if (a[m.x][m.y] > a[m.x][j]) //不是
break;
else{//是
cout << m.x << " " << m.y << endl;
break;
}
}
}
return 0;
}
输入:
4
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
输出:
3 0