1. 程式人生 > 其它 >找出一個二維陣列中的鞍點

找出一個二維陣列中的鞍點

技術標籤:演算法基礎演算法c語言

找出一個二維陣列中的鞍點(C語言)

題目要求:如標題,鞍點即該位置上的元素在該行上最大、該列上最小,也可能沒有鞍點

思路:

  1. 先找出每行中的最大值,並且確定其位置
  2. 然後判斷該位置的值是否為該列中最小:如果找到比它小的值,則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; }