您的位置:首页 > 其它

一个求矩阵鞍点(即行上最小的数 同时是列上最大的数)的C程序

2012-10-10 22:51 253 查看
/*
求一个矩阵的鞍点,即在行上最小在列上最大的点
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int readmtr(int a[][10],int n)
{
int i,j;
printf("input n*n matric:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);					//a[i][j]=rand()%10000;
return 1;
}

void printmtr(int a[][10],int n)
{
int i,j;
srand((int)time(0));
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
}
main()
{
int a[10][10],n=3,i,j,k,minj,t,kz=0;
readmtr(a,n);
printmtr(a,n);
for(i=0;i<n;i++)
{
t=a[i][0];
minj=0;
for(j=1;j<n;j++)
if(a[i][j]<t)
{t=a[i][j];	minj=j;}
for(k=0;k<n;k++)
{
if(a[k][minj]>t)				/*		B:列中不存在比该点大的数不满足k<n跳出for(即 k==n)			*/
break;						/*		A:如果列中存在比该点大的数执行break,跳出for,此时 k<n ;	*/
if(k<n-1)
continue;					/* 当判断到 最后一列时仍没有比该数大的 即 k==n-1 此时 if为假。跳过continue */
printf("zhe result is a[%d][%d] = %d\n",i,minj,a[i][minj]);
kz=1;
break;
}
}
if(kz==0) printf("No solution\n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐