求⼀个矩阵的鞍点(c语⾔)
问题重述
求⼀个矩阵的鞍点(即在⾏上最⼤⽽在列上最⼩的点)。算法设计
1)在第⼀⾏找最⼩值,并记录其列号。
2)然后验证其是否为所在列的最⼤值,如果是,则找到问题的解;否则,则继续在下⼀⾏找最⼩值 …… 。1>顶层算法
1 for(i=0;i2 { 找第i⾏上最⼩的元素t及所在列minj;3 检验t是否第minj 列的最⼤值,是则输出这个鞍点;}
2>找第i⾏上最⼩的元素t及所在列minj
t=a[i][0]; minj=0;for(j=1;j3>检查minj是否是列最⼤的值,是则输出for(k=0;kif(a[k][minj]>t) break;if(k>=n) print(“the result is a[“,i ,“][” ,minj, “]=”,t);
代码如下:
1 #include 2 #define N 3 34 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;i11 for(j=0;j12 printf(\"%-5d\\",array[i][j]);13 printf(\"\\n\");14 }15 for(i=0;i22 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 }