其他分享
首页 > 其他分享> > 寻找鞍点

寻找鞍点

作者:互联网

寻找鞍点

题目内容:

请编程找出一个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"

 1 #include  <stdio.h>
 2 #define N 32
 3 void FindSaddlePoint(int a[][N], int m, int n);
 4 int main()
 5 {
 6     printf( "Input m,n:\n");
 7     int m,n;
 8     scanf("%d,%d",&m,&n);
 9 
10     printf( "Input matrix:\n" );
11     int array[N][N]={0};
12     for(int i=0;i<m;++i){
13         for(int j=0;j<n;++j){
14             scanf("%d",&array[i][j]);
15         }
16     }
17     FindSaddlePoint(array,m,n);
18 
19     return 0;
20 }
21 void FindSaddlePoint(int a[][N], int m, int n)
22 {
23     int find = 0;
24     for(int i=0;i<m;++i)
25     {
26         int rowPos=i,columnPos=0,flag = 1;
27         for(int j=1;j<n;++j)
28         {
29             if(a[i][j]>a[rowPos][columnPos]){
30                 rowPos = i;
31                 columnPos = j;
32             }
33         }
34         for(int k=0;k<m;++k){
35             if(a[k][columnPos]<a[rowPos][columnPos]){
36                 flag = 0;
37                 break;
38             }
39         }
40         if(flag){
41             printf("a[%d][%d] is %d\n",rowPos,columnPos,a[rowPos][columnPos]);
42             find = 1;
43         }
44     }
45     if(!find){
46         printf("No saddle point!\n");
47     }
48 }

 

 

标签:matrix,point,int,矩阵,寻找,Input,鞍点
来源: https://www.cnblogs.com/GoldenEllipsis/p/11665938.html