找出一個二維陣列中的鞍點
阿新 • • 發佈:2021-01-06
找出一個二維陣列中的鞍點(C語言)
題目要求:如標題,鞍點即該位置上的元素在該行上最大、該列上最小,也可能沒有鞍點
思路:
- 先找出每行中的最大值,並且確定其位置
- 然後判斷該位置的值是否為該列中最小:如果找到比它小的值,則break跳出迴圈。若始終沒break跳出迴圈,則說明沒找到,那麼這個數就是鞍點;如果有break跳出迴圈,那麼這個數就不是鞍點
以下為具體程式碼:
#include <stdio.h>
int main()
{
int m,n;
printf("Please enter a matrix's row and column: \n" );
scanf("%d %d",&m,&n);
int array[m][n];
int i,j;
printf("Please enter a %d rows, %d columns matrix: \n",m,n);
for(i=0;i<=m-1;i++)
for(j=0;j<=n-1;j++)
scanf("%d",&array[i][j]);
int k,max,max_j;
for(i=0;i<= m-1;i++)
{
max=array[i][0];
max_j=0;
for(j=1;j<=n-1;j++)
{
if(max<array[i][j])
{
max=array[i][j];
max_j=j;
}
}
for(k=0;k<=m-1;k++)
{
if(max>array[k][max_j] )
break;
}
if(k>=m)
{
printf("The result is: array[%d][%d]=%d\n",i,j,max);
break;
}
else
{
printf("There is no result.\n");
break;
}
}
return 0;
}