zoukankan      html  css  js  c++  java
  • 网易云课堂_程序设计入门-C语言_第六章:数组_2鞍点

    2
    鞍点(5分)

    题目内容:

    给定一个n*n矩阵A。矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数。一个矩阵A也可能没有鞍点。

    你的任务是找出A的鞍点。

    输入格式:

    输入的第1行是一个正整数n, (1<=n<=100),然后有n行,每一行有n个整数,同一行上两个整数之间有一个或多个空格。

    输出格式:

    对输入的矩阵,如果找到鞍点,就输出其下标。下标为两个数字,第一个数字是行号,第二个数字是列号,均从0开始计数。

    如果找不到,就输出

    NO

    题目所给的数据保证了不会出现多个鞍点。

    输入样例:

    1 7 4 1 

    4 8 3 6 

    1 6 1 2 

    0 7 8 9

    输出样例:

    2 1

    时间限制:500ms内存限制:32000kb
     
     1 #include <stdio.h>
     2 main()
     3 {
     4     int i, j, k, n, t, andian = 0;
     5     scanf("%d", &n);
     6     int a[100][100], b[100][100];
     7 
     8     for (i = 0; i < n; i++)        /* a表清零 */
     9     {
    10         for (j = 0; j < n; j++)
    11         {
    12             scanf("%d", &a[i][j]);
    13         }
    14     }
    15 
    16     for (i = 0; i < n; i++)        /* b表清零 */
    17     {
    18         for (j = 0; j < n; j++)
    19         {
    20             b[i][j] = 0;
    21         }
    22     }
    23 
    24     for (i = 0; i < n; i++)        /* 寻找每行的最大值 */
    25     {
    26         k = 0;
    27         t = a[i][0];        /* t赋值为每行的第0列 */
    28         for (j = 0; j < n; j++)
    29         {
    30             if (a[i][j] > t)
    31             {
    32                 t = a[i][j];        /* t为每行的最大值 */
    33                 k = j;        /* k赋值为最大值的所属列数 */
    34             }
    35         }
    36         b[i][k] = b[i][k] + 1;        /* 找到每行的最大值+1 */
    37     }
    38 
    39     for (j = 0; j < n; j++)        /* 寻找每列的最小值 */
    40     {
    41         k = 0;
    42         t = a[0][j];        /* t赋值为每列的第0行 */
    43         for (i = 0; i < n; i++)
    44         {
    45             if (a[i][j] < t)
    46             {
    47                 t = a[i][j];        /* t为每列的最小值 */
    48                 k = i;        /* k赋值为最小值的所属行数 */
    49             }
    50         }
    51         b[k][j] = b[k][j] + 1;        /* 找到每列的最小值+1 */
    52     }
    53 
    54     for (i = 0; i < n; i++)        /* 寻找鞍点2 */
    55     {
    56         for (j = 0; j < n; j++)
    57         {
    58             if (b[i][j] == 2)
    59             {
    60                 printf("%d %d
    ", i, j);
    61                 andian = 1;        /* 找到鞍点1 */
    62             }
    63         }
    64     }
    65 
    66     if (andian == 0)        /* 找不到鞍点0 */
    67     {
    68         printf("NO
    ");
    69     }
    70 }
  • 相关阅读:
    常用的居中方法
    CSS实现盒子高度撑开且以最高的为高
    利用vertical-align实现行内元素对齐
    CSS实现模糊效果
    【LeetCode 37】解数独
    【LeetCode 36】有效的数独
    【LeetCode 35】搜索插入位置
    【LeetCode 34】在排序数组中查找元素的第一个和最后一个位置
    【LeetCode 33】搜索旋转排序数组
    【LeetCode 32】最长有效括号
  • 原文地址:https://www.cnblogs.com/denggelin/p/5414107.html
Copyright © 2011-2022 走看看