• C语言-找鞍点


    一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

    本题要求编写程序,求一个给定的n阶方阵的鞍点。

    输入格式:

    输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

    输出格式:

    输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

    输入样例1:

    1. 4
    2. 1 7 4 1
    3. 4 8 3 6
    4. 1 6 1 2
    5. 0 7 8 9

    输出样例1:

    2 1
    

    输入样例2:

    1. 2
    2. 1 7
    3. 4 1

    输出样例2:

    NONE
    1. #include "stdio.h"
    2. int main(){
    3. int Pow;
    4. scanf("%d",&Pow);
    5. int arr[Pow][Pow];
    6. //鞍点不存在计数器
    7. int cou = 0;
    8. for (int i = 0; i < Pow; ++i) {
    9. for (int j = 0; j < Pow; ++j) {
    10. scanf("%d",&arr[i][j]);
    11. }
    12. }
    13. for (int i = 0; i < Pow; ++i) {
    14. int RowMax = 0;
    15. int ColMin = 99999999;
    16. //索引变量声明
    17. int y1 = 0,x1 = 0,y2 = 0;
    18. //鞍点按行查找
    19. for (int j = 0; j < Pow; ++j) {
    20. if(arr[i][j] > RowMax){
    21. RowMax = arr[i][j];
    22. y1 = i;
    23. x1 = j;
    24. }
    25. }
    26. //鞍点按列查找
    27. for (int k = 0; k < Pow; ++k) {
    28. if(arr[k][x1] < ColMin){
    29. ColMin = arr[k][x1];
    30. y2 = k;
    31. }
    32. }
    33. //鞍点判断
    34. if(y1 == y2)
    35. printf("%d %d\n",y1,x1);
    36. else
    37. cou++; //无鞍点计数器计数
    38. }
    39. //无鞍点判断
    40. if(cou == Pow)
    41. printf("NONE");
    42. }

    以上代码全为本人亲自手敲,可能有一些错误和不足之处,如有更好的方法和建议,欢迎您在评论区友善讨论。

  • 相关阅读:
    面向对象技术浅析
    day14网络编程
    微服务架构的可观察性设计模式
    C++学习之十二
    C语言猜数字游戏详解及代码优化
    android kotlin学习
    前端-(5)
    5. The Storage String
    rsync远程同步
    LeetCode 面试题 04.08. 首个共同祖先
  • 原文地址:https://blog.csdn.net/m0_61717621/article/details/134523548