为了账号安全,请及时绑定邮箱和手机立即绑定

求一个二维数组的鞍点(该行最大,该列最小的元素)

大一萌新求改错

#include<stdio.h>
int main()
{
int x,y;
printf("请告诉我你想输入的数组有几行几列\n");
scanf("%d,%d",&x,&y);
printf("\n");
printf("请输入这个数组\n");
int a[x][y]={0},i,j;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
scanf("%d",&a[i][j]);
} }
int p[x]={0},q[y]={0};
for(i=0;i<x;i++)
p[i]=a[i][0];
for(j=0;j<y;j++)
q[j]=a[0][j];
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
if(a[i][j]>p[i])
p[i]=a[i][j];
} }
for(j=0;j<y;j++)
{
for(i=0;i<x;i++)
{
if(a[i][j]<q[j])
q[j]=a[i][j];
} }
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
if(p[i]==q[j])
printf("%d\n",p[i]); } }
return 0;
}5a32744400019bdd11520864.jpg

正在回答

1 回答

#include <stdio.h>
int a[105][105];
int main(){
    int n;
    while (~scanf("%d",&n)){
        for (int i=0;i<n;i++)
            for (int j=0;j<n;j++)
                scanf("%d",&a[i][j]);
int k=0;
        for (int i=0;i<n;i++){
            for (int j=0;j<n;j++){
                int flag=0;
                for (int ii=0;ii<n;ii++){                    if (ii==i) continue;
                    if (a[ii][j]<a[i][j]){
                        flag=1;
                        break;
                    }
                }
                for (int jj=0;jj<n;jj++){
                    if (jj==j) continue;
                    if (a[i][jj]>a[i][j]){
                        flag=1;
                        break;
                    }
                }
                if (flag==0){
                    printf("%d %d\n",i,j);
k++;
                }
            }
        }
if (!k) printf("NO\n");
    }
    return 0;
}

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求一个二维数组的鞍点(该行最大,该列最小的元素)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信