一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
题要求编写程序,求一个给定的n阶方阵的鞍点。
思路:每一行上最大值的列数、每一列上最小值的行数用两个数组存储,后进行比较
#include<stdio.h>
int main()
{
int n,data[10][10],row[10],col[10];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&data[i][j]);
}
}
for(int i=0;i<n;i++)
{
row[i]=0;
for(int j=1;j<n;j++)
{
if(data[i][j]>data[i][row[i]])
{
row[i]=j; //此行最大值的列数
}
}
}
for(int i=0;i<n;i++) //此列最小值的行数
{
col[i]=0;
for(int j=1;j<n;j++)
{
if(data[j][i]<data[col[i]][i])
{
col[i]=j;
}
}
}
for(int i=0;i<n;i++) //按行遍历
{
if(i==col[row[i]]) //row[i]此行最大的的值的列数 col此列上最小的的行数相等即可
{
printf("%d %d\n",col[i],row[i]);
return 1;
}
}
printf("NONE"); //未找到
return 0;
}