题目:如果矩阵A中存在这样的一个元素A (i) (j)满足下列条件: (i) (j)是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点.编写一个程序计算出矩阵A的所有马鞍点.以及其他置.
要求:1.写出题目的解决算法和步骤.
2.用C程序编写,写出程序代码.
3.写出上机操作运行代码后的结果.
以上的小括号统一为[] 中括号!
请根据题目要求写出答案?有能力的解答,希望得出正确答案!
>> 本文固定链接: http://www.vcgood.com/archives/2461
自已写好了再发上来,相信有人会帮你纠错
算法:定义个结构体数组变量包含数据和其行列;
输入数组;
在每行中比较得个最小值并和其位置,
在每列中比较得个最大值并和其位置,
将其储存在结构体数组中;
比较位置,如果位置相同输出数据和位置;
编码:
#include”stdio.h”
struct num
{number;
indexi;
indexj;
}num[8];
void main()
{int a[3][5],i,j,min,max;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
scanf(“%d”,&a[i][j]);
for(i=0;i<3;i++)
{min=a[i][0];
for(j=0;j<5;j++)
if(a[i][j]<=min)
{min=a[i][j];
num[i].number=min,num[i].indexi=i+1,num[i].indexj=j+1;}
}
for(j=0;j<5;j++)
{max=a[0][j];
for(i=0;i<3;i++)
if(a[i][j]>=max)
{max=a[i][j];
num[j+3].number=max,num[j+3].indexi=i+1,num[j+3].indexj=j+1;}
}
for(i=0;i<3;i++)
{for(j=3;j<8;j++)
if(num[i].indexi==num[j].indexi&&num[i].indexj==num[j].indexj)
printf(“the number is %d,the indexi is %d,the indexj is %d\n”,num[i].number,num[i].indexi,num[i].indexj);
}
}
输入 6 5 7 8 9
8 4 6 7 2 运行后得出the number is 5,the indexi is 1,the indexj is 2
9 1 5 4 3
自己再算算看
恩, 好的, 非常感谢!
不用谢,大家常来切磋切磋嘛哦!!