m0_61904214 2021-11-02 00:29 采纳率: 100%
浏览 42
已结题

关于#c语言#的问题:输出它的行列下标,输出NO输入格式:第一行输入n第二行开始输入n阶方阵,数值间空格隔开

题目:
找出一个n(由键盘输入,1<=n<=6)阶方阵(整数)中的鞍点(值在该行上最大 ,在该列上最小的元素称为鞍点)。如果找到鞍点,输出它的行列下标,没有鞍点,输出NO

输入格式:
第一行输入n

第二行开始输入n阶方阵,数值间空格隔开。

输出格式:
若存在靶点,输出靶点的行列下标(空格隔开);否则输出NO。

输入样例:
在这里给出一组输入。例如:

3
1 3 5
2 4 6
3 9 12
输出样例:
在这里给出相应的输出。例如:

0 2
结尾无空行

我的代码:
#include <stdio.h>

int main()
{
    int a,o=0;
    scanf("%d\n", &a);
    int k[a][a];
    for (int i = 0; i<a; i++)
    {
        for (int j = 0; j<a; j++)
        {
            scanf("%d", &k[i][j]);
        }
    }
    int xmax, ymax;
    for (int i = 0; i<a; i++)
    {
        for (int j = 0; j<a; j++)
        {
            xmax = k[i][0];
            if (xmax < k[i][j])
                xmax = k[i][j];
        }
        int q;
        for (int t = 0; t<a; t++)
        {
            int j;
            if (xmax == k[i][t])
            {
                q = t;
            }
            for (int z = 0; z<a; z++)
            {
                ymax = k[0][q];
                if (ymax>k[z][q])
                    ymax = k[z][q];
            }
        }
         if (ymax == xmax)
         {printf("%d %d", i, q);break;}
            else
                o+=1;
    }
    if(o==a)
    { printf("NO");}
    return 0;
}

为什么无靶点的测试点一直没过,求解

  • 写回答

2条回答 默认 最新

  • 关注

    xmax = k[i][0];要放在 for (int j = 0; j<a; j++)循环之前
    ymax = k[0][q];也是一样

    #include <stdio.h>
    
    int main()
    {
        int a,i;
        scanf("%d\n", &a);
        int k[a][a];
        for (i = 0; i<a; i++)
        {
            for (int j = 0; j<a; j++)
            {
                scanf("%d", &k[i][j]);
            }
        }
        for (i = 0; i<a; i++)
        {
            int q = 0;
            for (int j = 1; j<a; j++)
            {
                if (k[i][q] < k[i][j])
                    q = j;
            }
            int p;
            for (p = 0; p<a; p++)
            {
                if (k[i][q] > k[p][q])
                    break;
            }
            if (p>=a)
            {
                printf("%d %d", i, q);
                break;
            }
        }
        if(i>=a)
            printf("NO");
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月10日
  • 已采纳回答 11月2日
  • 创建了问题 11月2日

悬赏问题

  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)