首页 > 编程语言 > 详细

求一个矩阵的鞍点(c语言)

时间:2020-06-22 14:04:22      阅读:84      评论:0      收藏:0      [点我收藏+]

问题重述

求一个矩阵的鞍点(即在行上最大而在列上最小的点)。

算法设计

1)在第一行找最小值,并记录其列号。
2)然后验证其是否为所在列的最大值,如果是,则找到问题的解;
否则,则继续在下一行找最小值 …… 。

1>顶层算法

1 for(i=0;i<n;i=i+1)
2   {     找第i行上最小的元素t及所在列minj;
3         检验t是否第minj 列的最大值,是则输出这个鞍点;}

2>找第i行上最小的元素t及所在列minj

t=a[i][0]; minj=0;
for(j=1;j<n;j=j+1)
    if(a[i][j]<t)
    {   t=a[i][j];
         minj=j;   }

3>检查minj是否是列最大的值,是则输出

for(k=0;k<n;k=k+1)
     if(a[k][minj]>t)   break;
if(k>=n)   print(“the result is a[“,i ,“][” ,minj, “]=”,t);

代码如下:

 1 #include<stdio.h>
 2 #define N 3
 3 
 4 int main(){
 5     int array[N][N]={1,2,3,4,5,6,7,8,9};
 6     int i,j,min,max,k;
 7     
 8     printf("数组有:\n");
 9     for(i=0;i<N;i++)
10     {
11          for(j=0;j<N;j++)
12             printf("%-5d\t",array[i][j]);
13             printf("\n");
14     }
15     for(i=0;i<N;i++){
16         max=array[i][0];
17         for(j=0;j<N;j++){
18             if(max<array[i][j])
19             max=array[i][j];
20             k=j;
21         }
22         min=array[0][k];
23         if(min>array[i][k])
24             min=array[i][k];    
25         if(max==min)
26         printf("\na[%d][%d]=%d",i+1,k+1,array[i][k]);                        
27     }
28 }

 

求一个矩阵的鞍点(c语言)

原文:https://www.cnblogs.com/xiayuan521/p/13176336.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!