2
鞍點(5分)
題目內容:
給定一個n*n矩陣A。矩陣A的鞍點是一個位置(i,j),在該位置上的元素是第i行上的最大數,第j列上的最小數。一個矩陣A也可能沒有鞍點。
你的任務是找出A的鞍點。
輸入格式:
輸入的第1行是一個正整數n, (1<=n<=100),然后有n行,每一行有n個整數,同一行上兩個整數之間有一個或多個空格。
輸出格式:
對輸入的矩陣,如果找到鞍點,就輸出其下標。下標為兩個數字,第一個數字是行號,第二個數字是列號,均從0開始計數。
如果找不到,就輸出
NO
題目所給的數據保證了不會出現多個鞍點。
輸入樣例:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
輸出樣例:
2 1
時間限制:500ms內存限制:32000kb
//
// main.c
// c yuyan
//
// Created by anzhongyin on 2016/11/29.
// Copyright © 2016年 anzhongyin. All rights reserved.
//
#include <stdio.h>
//#include <math.h>
int main(int argc, const char * argv[]) {
// insert code here...
// TODO Auto-generated method stub
int max=0,maxn[2]={-1,-1};
int n,c=1;
int a[100][100]={0};
scanf("%d",&n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<n;i++)
{
max=0;
for(int j=0;j<n;j++)
{
if(max<a[i][j])
{
max=a[i][j];
maxn[0]=i;
maxn[1]=j;
}
}
int g=1;
for(int j=0;j<n;j++)
{
if (a[j][maxn[1]]<max&&i!=j)
{
g=0;
break;
}
}
if(g)
{
printf("%d %d\n",maxn[0],maxn[1]);
c=0;
}
}
if(c)
{
printf("NO\n");
}
}
