Finding the saddle point of a matrix
A matrix a is said to have a saddle point if some entry a[I][j] is the smallest value in the ith row and the largest value in the jth column. A matrix may have more than one saddle point.
Example
#include<stdio.h> #define ROW 3 #define COL 3 int main() { void read(int a[][COL],int,int); void dis(int a[][COL],int,int); int sadd_pt(int a[][COL],int,int,int *,int*); int i,a[3][3],m=0,n=0; read(a,ROW,COL); printf("\nThe matrix is \n"); dis(a,ROW,COL); i=sadd_pt(a,3,3,&m,&n); printf("The saddle point is %d &its position is row : %d col :%d\n",i,m+1,n+1); getchar(); return 0; } void read(int c[][3] ,int i ,int k) { int j,l; printf("Enter the array \n"); for(j=0;j<i;j++) for(l=0;l<k;l++) scanf("%d",&c[j][l]); fflush(stdin); } void dis(int d[][3],int i,int k) { int j,l; for(j=0;j<i;j++) { for(l=0;l<k;l++) printf("\t%d",d[j][l]); printf("\n"); } } int sadd_pt(int mat[][3],int k ,int l,int *row,int *col) { int min=32767,i=0,j,m,n,p=0; while(i<k) { min=32767; m=i; p=0; for(j=0;j<l;j++) { if(mat[i][j]<min) { min=mat[i][j]; n=j; } } for(j=0;j<k;j++) if(min>=mat[j][n]) p++; if(p==3) { *row=m; *col=n; return(min); } i++; } printf("No saddle point exists\n"); getch(); exit(0); }