寻找二维数组的“鞍点”

鞍点:该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。

   

 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++){
11             scanf("%d",&a[i][j]);
12         }
13     }
14     for(i=0;i<N;i++){
15         for(j=0;j<M;j++){
16             printf("%5d",a[i][j]);
17         }
18         printf("\n");
19     }
20     for(i=0;i<N;i++){
21         max=a[i][0];//开始时假设a[i][0]最大
22         maxj=0;//将最大数的列号存在maxj中
23         for(j=0;j<M;j++){//找出行最大值
24             if(a[i][j]>max){
25                 max=a[i][j];
26                 maxj=j;//将最大数的列号存在maxj中
27             }
28         }
29         flag=1;//假设为鞍点
30         for(k=0;k<N;k++){
31             if(max > a[k][maxj]){//将该行最大数与同列元素相比
32                 flag=0;//如果该数不是同列最小,表示不是鞍点,令flag=0;
33                 continue;//跳出k的循环
34             }
35         }
36         if(flag){//flag为1表示是鞍点
37             printf("a[%d][%d]=%d\n",i,maxj,max);
38             break;//跳出i的循环
39         }
40     }
41     if(!flag)
42         printf("not exist\n");
43     system("pause");
44     return 0;
45 }
时间: 2024-09-29 10:25:22

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

二维数组找鞍点

二维数组找鞍点(鞍点是行最大,列最小的一个数) 一个矩阵元素的"鞍点"是指该位置上的元素值在该行上最大.在该列上最小. 本题要求编写程序,求一个给定的n阶方阵的鞍点. 输入格式: 输入第一行给出一个正整数n(1≤n≤6).随后n行,每行给出n个整数,其间以空格分隔. 输出格式: 输出在一行中按照"行下标 列下标"(下标从0开始)的格式输出鞍点的位置.如果鞍点不存在,则输出"NONE".题目保证给出的矩阵至多存在一个鞍点. 输入样例1: 4 1 7

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("输入列"

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程序设计-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("

Java的二维数组的应用及杨辉三角的编写

(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个,即该位置上的元素在该行上最大,在该列上最小(注:一个二维数组也可能没有这样的鞍点). /** * * @author liuhui *@version Java上机实验三 *@time 2016.10.30 */ public class javatest2 { public static int

java 数据结构 图中使用的一些常用算法 图的存储结构 邻接矩阵:图的邻接矩阵存储方式是用两个数组来标示图。一个一位数组存储图顶点的信息,一个二维数组(称为邻接矩阵)存储图中边或者弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 实例如下,左图是一个无向图。右图是邻接矩阵表示:

以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合. 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示. 对于下图无向图G1来说,G1=(V1, {E1}),其中顶点集合V1={A,B,C,D}:边集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}: 有向图:若

【剑指Offer面试题】二维数组中的查找

下决心AC所有剑指offer面试题. 九度OJ面试题地址:http://ac.jobdu.com/hhtproblems.php 书籍:何海涛--<剑指Offer:名企面试官精讲典型编程题> 对于面试题,面试官往往更希望我们能提出优化方法,这样更能体现我们的思维能力以及传说中的"内功".所以做剑指offer要着重训练这方面,多总结多细究,总是有好处的.加油~ 二维数组中的查找 时间限制:1 秒内存限制:32 兆 特殊判题:否提交:19005解决:3642 题目描述: 在一个

【剑指Offer面试题】九度OJ1384:二维数组中的查找

下决心AC全部剑指offer面试题. 九度OJ面试题地址:http://ac.jobdu.com/hhtproblems.php 书籍:何海涛--<剑指Offer:名企面试官精讲典型编程题> 对于面试题,面试官往往更希望我们能提出优化方法,这样更能体现我们的思维能力以及传说中的"内功".所以做剑指offer要着重训练这方面,多总结多细究,总是有优点的.加油~ 题目链接地址: http://ac.jobdu.com/problem.php?pid=1384 二维数组中的查找

在一个每一行从左到右递增每一列从上到下递增的二维数组中查找一个整数是否存在——3

给定一个二维数组,数组的特点是:每一行从左到右数据大小依次递增,每一列数据从上到下依次递增,要求判断一个整数是否在这个二维数组中: 设计二维数组如下: 首先,毋庸置疑的的是,遍历一遍数组肯定能判断出来,这也是最笨的方法了,因此,要想提高程序的运行效率就得找出一种高效的方法来查找: 一开始的想法大概都能想到从数组第一行第一列的数开始沿着对角线判断,如果是对角线数据就可以直接返回,比如我们要想查找17这个数,这时候17比0.9.16都要大,因此以0.9.16为对角线的矩形数据就可以排除了,接下来判断