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

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

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

请根据题目要求写出答案?有能力的解答,希望得出正确答案!

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
①⑦②⑥①零②③⑥

很简单,
1, 首先扫描行,在每行中找出最小数字的位置,然后扫描列,找出每列最大的位置,然后寻找匹配

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

void printMaxMin(int a[