早教吧 育儿知识 作业答案 考试题库 百科 知识分享

寻找矩阵的鞍点输入:第一行为矩阵的行数和列数,从第二行开始,为矩阵本身(假设输入的矩阵只有0和1个鞍点)34135323413267输出:Point:a[1][2]==4(下标从0开始)#includeintmain(){intn,m,a[50

题目详情
寻找矩阵的鞍点
输入:第一行为矩阵的行数和列数,从第二行开始,为矩阵本身(假设输入的矩阵只有0和1个鞍点)
3 4
1 3 5 3
2 3 4 1
3 2 6 7
输出:
Point:a[1][2] == 4 (下标从0开始)
# include
int main()
{
int n,m,a[50][50],i,j,k = 0,t = 0,p = 0,q = 0;
scanf("%d %d",&n,&m);
for(i = 0;i < n;i++)
{
for(j = 0;j < m;j++)
scanf("%d",&a[i][j]);
}
for(i = 0;i < n;i++)
{
for(j = 0;j < m;j++)
{
if(a[i][j] > k)
{
k = a[i][j];
p = i;
t = j;
}
}
for(i = 0;i < n;i++)
{
if(a[i][t] < k)
break;
}
if(i == n)
{
q++;
printf("Point:a[%d][%d]==%d\n",p,t,k);
}
}
if(q == 0)
printf("No Point\n");
return 0;
}
为什么输出无结果?
▼优质解答
答案和解析

表示我看不懂你的代码,不过你可以参考一下我的代码

#include
using namespace std;
int s1[50][50]={0},x,y,a,b,n=0,m;//s1记录矩阵,x y记录矩阵大小,a b为循环变量,m记录选定的点
bool o;//判断使用
int main()
{
cin>>x>>y;//读入xy
for(a=1;a<=x;a++)
for(b=1;b<=y;b++) cin>>s1[a][b];//读入矩阵
for(a=1;a<=x;a++)//循环列
{
o=true;
for(b=1;b<=y;b++)//从当前行中选出最大的数
{
if((n==0)||(s1[a][b]>n)) {n=s1[a][b];m=b;}//选出最大数
}
for(b=1;b<=x;b++)//从选定的数中,判断这个数在列中是否最小
{
if(n>s1[b][m]) {o=false;n=0;break;}如果不是最小则o=false,选定数n归0,跳出循环,重新选数
}
if(o) cout<}
}