二维数组找鞍点

二维数组找鞍点(鞍点是行最大,列最小的一个数)

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
输入格式:

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

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

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

输出样例1:

2 1

输入样例2:

2
1 7
4 1

输出样例2:

NONE

/先说一下我的思路是,先用两个一维数组来分别存放二维数组的行最大值,与列的最小值,之后再用嵌套循环比较她两是否相等,在相等的情况下,下标就是鞍点的所在的位置/
现在提供核心代码,第一步是先找出行最大值和列的最小值

这步的小难点是假设一开始的最值问题,值得注意的是循环问题;
第二步也就是最后一步是比较,使用嵌套循环来比较可以直接找到鞍点后输出。
在写的过程中,思路是有觉得,比较一下,然后找到那个鞍点的值,之后再利用那个值来寻找它在二维数组中的位置,但是有一个错误点是,有可能遇到重复的,此时下标就找错了,所以利用嵌套循环,在找的过程中还可以随时输出下标。

附上测试点通过的图

将思路化为流程图

原文地址:https://www.cnblogs.com/hlt99/p/12051045.html

时间: 2024-10-04 15:55:18

二维数组找鞍点的相关文章

c语言题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点

1 //题目:找出一个二维数组的"鞍点",即该位置上的元素在该行上最大,在该列上最小.也可能没有鞍点. 2 // 3 #include "stdio.h" 4 #include <stdlib.h> 5 int main() 6 { 7 int i,j,k,hang=1,lie=1; 8 printf("输入行"); 9 scanf("%d",&hang); 10 printf("输入列"

二维数组找最大值

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 我得思路是从左上角开始,即arr[0][0],将这个整数和它相比,如果比它大,那么将这个整数和arr[1][1]比 如果还大那么继续,如果小于arr[n][n],那么去arr[n][n]这个元素的左面和上面找,如果有说明在这个数组中 没有说明不在 这个想法首先只适用于方阵,并且查找效率并不是最好 答案的解法是从左下角开始 如果整

寻找二维数组的“鞍点”

鞍点:该位置上的元素在该行上最大.在该列上最小.也可能没有鞍点.     1 #include <stdio.h> 2 #include <stdlib.h> 3 #define N 4 4 #define M 5 5 int main() 6 { 7 int i,j,k,maxj,max,a[N][M],flag; 8 printf("input matrix:\n"); 9 for(i=0;i<N;i++){ 10 for(j=0;j<M;j++

20190110-用笨办法找到二维矩阵的鞍点

1:找出一个多维数组的鞍点,即该元素在该行上最大,在该列上最小,也可能没有鞍点 a = [    [1,2,3,4],    [4,5,6,2],    [7,0,5,2],    [11,10,7,9]] 解题思路如下: step1:先找出每行的最大值,及其index,输出最大值,即所在行和列作为要给list存如result列表中,函数写法如下: def find_saddle_max_point(s): result =[] #用result存储每行最大值以及其index for i in

C语言--二维数组,字符串数组,多维数组

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // int a[2][3]={ // {1,2,3}, // {4,5,6} // }; // int a[2][3]={1,2,3,4,5,6}; // //打印单个元素 // printf("%d",a[1][1]); // //元素没赋全,默认为0 // int b[2][3]={{1,2,3},{4}}; // /

七、二维数组

1.只有一个下标的数组称为一维数组,有两个下标的数组称为二维数组,有N个下标的数组称为n维数组. 2.二维数组定义: 类型说明符 数组名[常量表达式1][常量表达式2] = {值1,值2,...}: int a[2][3] = {{7,6,3},{2,8,5}}; 说明2行3列的数组 3.常量表达式1表示第一维下标的长度 常量表达式2表示第二维下标的长度 4.二维数组的元素也称为双下标变量 5.赋值一般与两层for循环嵌套(双循环)使用.外层循环控制行数,内层循环控制每行对应的列数. 6.二维数

求二维数组的马鞍点-C程序设计-7.8习题

找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列最小.也可能没有鞍点. 下面是我做这道题时候的代码,如果有不正确的地方,还望大家多多指教. //马鞍点:矩阵中在行上最大,列上最小的点. #include <stdio.h> #define ROW 10 #define COLUMN 10 int i,j,m,n; int arr[ROW][COLUMN]; int main(){ void maandian(int arr[ROW][COLUMN]); printf("

剑指offer系列——二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数

题目:二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数 分析: 二维数组这里把它看作一个矩形结构,如图所示: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 在做这道题的时候我最先考虑的是每次比较对角线上的元素可能可以取得较好的效果, 以查找9为例, 从1(0,0)开始,1<10,可以得出结论,10在1的右侧或下侧: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 然后看4(1,1),4<9, 1 2 8 9 2

C语言 数组输出,冒泡排序法,沉底排序法,二维数组输出,输出字母列长度,从随机数组中找重复数

#include <stdio.h> #define sum 3+4//宏定义是原封不动的使用used for test4 #include <time.h>//used for test8~9 #include <stdlib.h>//used for test8~9 void test(){//数组输出 //int a[5]={1,2,3,4,5}; printf("array output,look,please...\n"); int a[1