C编程问题.希望高手来帮帮忙.谢谢

题目:如果矩阵A中存在这样的一个元素A(i)(j)满足下列条件:(i)(j)是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点.编写一个程序计... 题目:如果矩阵A中存在这样的一个元素A (i) (j)满足下列条件: (i) (j)是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点.编写一个程序计算出矩阵A的所有马鞍点.以及其他置.
要求:1.写出题目的解决算法和步骤.
2.用C程序编写,写出程序代码.
3.写出上机操作运行代码后的结果.

以上的小括号统一为[] 中括号!

请根据题目要求写出答案?有能力的解答,希望得出正确答案!
展开
 我来答
猴哥的乐子
2008-06-13 · TA获得超过3332个赞
知道小有建树答主
回答量:762
采纳率:0%
帮助的人:876万
展开全部
1.算法描述:
首先,对矩阵做行排查,找到该行的最小值,然后搜索该最小值所在的列,它是不是最大值如果有一个比它小,就不是,跳出搜索当前列,如果搜索完该列也没有比它大的数,说明它就是马鞍点,就输出.转入到下一行搜索,一直做到最后一行.
2.程序的代码实现:
#include <iostream>
using namespace std;
int find_mad(int a[][4],int n,int m)/*n表示行数,m表示列数*/
{
int i,j,t,ri,rj;
for(i=0;i<n;i++)
{
t=a[i][0];ri=i;rj=0;
for(j=1;j<m;j++)
if(a[i][j]<t)
{
t=a[i][j];
ri=i;rj=j;
}
for(j=0;j<n;j++)
if(a[j][rj]>a[ri][rj])
break;
if(j>=n)
printf("A[%d][%d] is ma_an_dian,its value is %d .\n",ri+1,rj+1,a[ri][rj]);
}
return 0;
}

int main()
{
int a[4][4]={{1,2,1,5},{2,4,2,3},{2,2,1,5},{3,4,3,6}};
find_mad(a,4,4);
return 0;
}

有什么疑问??
可以Qme
①⑦②⑥①零②③⑥
炎二公子
2008-06-12 · TA获得超过258个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:0
展开全部
很简单,
1, 首先扫描行,在每行中找出最小数字的位置,然后扫描列,找出每列最大的位置,然后寻找匹配

2,大概程序是这样,懒得测试了,可能会有些小错,自己改改把

void printMaxMin(int a[][], int rows, int cols)
{
int rowMins[rows];
int colMaxs[cols];

for (int i = 0; i < rows; i++)
{
int temp = 0;
for (int j = 0; j < cols; j++)
{
if (a[i][j] < a[i][temp]) temp = j;
}
rowMins[i] = temp;
}

for (int i = 0; i < cols; i++)
{
int temp = 0;
for (int j = 0; j < rows; j++)
{
if (a[j][i] < a[temp][i]) temp = j;
}
colMaxs[i] = temp;
}

for (int i = 0; i < rows; i++) {
int j = rowMins[i];
if (colMaxs[j] == i) {
printf("马鞍点在于: %d行%d列,值为%d\n", i,j,a[i][j]);

}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式