尋找鞍點
阿新 • • 發佈:2018-12-15
尋找鞍點
題目內容:
請程式設計找出一個M*N矩陣中的鞍點,即該位置上的元素是該行上的最大值,是該列上的最小值。如果矩陣中沒有鞍點,則輸出“No saddle point!”
已知函式原型:
void FindSaddlePoint(int a[][N], int m, int n);
在該函式中輸出有無鞍點的資訊。
程式執行結果示例1:
Input m,n:
3,3↙
Input matrix:
1 2 3↙
4 5 6↙
7 8 9↙
a[0][2] is 3
程式執行結果示例2:
Input m,n:
3,4↙
Input matrix:
3 4 7 5↙
0 1 8 2↙
9 3 2 6↙
No saddle point!
輸入提示: “Input m,n:\n”
“Input matrix:\n"
輸入格式:
輸入矩陣大小: “%d,%d”
輸入矩陣元素: “%d”
輸出格式:
找到鞍點的輸出格式:“a[%d][%d] is %d\n”
沒找到鞍點的輸出格式:“No saddle point!\n”
#include <stdio.h> #define M 100 #define N 100 void FindSaddlePoint(int a[M][N], int m, int n); void getnumber(int a[M][N],int m,int n); int main() { int a[M][N]; int m,n; printf("Input m,n:\n"); scanf("%d,%d",&m,&n); printf("Input matrix:\n"); getnumber(a,m,n); FindSaddlePoint(a,m,n); return 0; } //找到並輸出鞍點 void FindSaddlePoint(int a[M][N], int m, int n) { int max,min,i,j,s,o; int b,sum=0; //-------------------------------- for(j=0;j<m;j++) { max=a[j][0]; //找到第j行的最大值 for(i=0;i<n;i++) { if(a[j][i]>max) max=a[j][i]; } //--------------------------------- for(o=0;o<n;o++) { if(a[j][o]==max) //找到最大值的列 { b=o; } } //--------------------------------- min=a[0][b]; for(s=0;s<m;s++) //找到這一列的最小值 { if(a[s][b]<min) min=a[s][b]; } //--------------------------------- if(a[j][b]==min) //判斷行的最大值與列的最小值是否相等 { printf("a[%d][%d] is %d\n",j,b,a[j][b]); sum=sum+1; } //-------------------------------------- } if(sum==0) printf("No saddle point!\n"); } //輸入陣列 void getnumber(int a[M][N],int m,int n) { int i,l; for(i=0;i<m;i++) { for(l=0;l<n;l++) { scanf("%d",&a[i][l]); } } }