网易云课堂_程序设计入门-C语言_第六章:数组_2鞍点

2

鞍点(5分)

题目内容:

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

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

输入格式:

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

输出格式:

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

如果找不到,就输出

NO

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

输入样例:

4

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\n", i, j);
61                 andian = 1;    /* 找到鞍点1 */
62             }
63         }
64     }
65
66     if (andian == 0)    /* 找不到鞍点0 */
67     {
68         printf("NO\n");
69     }
70 }
时间: 2024-10-11 01:31:51

网易云课堂_程序设计入门-C语言_第六章:数组_2鞍点的相关文章

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ compiler, or you need filename with '.cpp' suffix #endif #include "ege.h" using namespace ege; #endif #inc

网易云课堂_程序设计入门-C语言_第七周:指针与字符串_2GPS数据处理

2 GPS数据处理(6分) 题目内容: NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议.GPS接收机根据NMEA-0183协议的标准规范,将位置.速度等信息通过串口传送到PC机.PDA等设备. NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议

网易云课堂_程序设计入门-C语言_第四周:循环控制_2念整数

2 念整数(5分) 题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er san si 注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格.当遇到负数时,在输出的开头加上“fu”,如-2341输出为: fu er san si yi 输入格式: 一个整数,范围是[-100000,100000]. 输出格式: 表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有

网易云课堂_程序设计入门-C语言_期末考试编程题

1 字数统计(10分) 题目内容: 你的程序要读入一篇英文文章,然后统计其中的单词数来输出.需要统计的数据为: 总的单词数量: 含有1个字母到10个字母的单词的数量. 单词和单词的间隔是由以下标点符号形成的:空格.tab.回车换行.逗号.句号.问号.括号.双引号和冒号.这些符号不能被计入单词的长度中. 因此,对于下面的句子: "What you see is a very hefty response," said CNN Aviation Correspondent Rene Mar

网易云课堂_程序设计入门-C语言_第五周:函数_2完数

2 完数(5分) 题目内容: 一个正整数的因子是所有可以整除它的正整数.而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数.例如6=1+2+3(6的因子是1,2,3). 现在,你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有的完数. 提示:可以写一个函数来判断某个数是否是完数. 输入格式: 两个正整数,以空格分隔. 输出格式: 其间所有的完数,以空格分隔,最后一个数字后面没有空格.如果没有,则输出一个空行. 输入样例: 1 10 输出样例:

网易云课堂_C++程序设计入门(上)_第1单元:C++概览_第1单元作业 - 写代码 - 互评 (难度:易)

第1单元作业 - 写代码 - 互评 (难度:易) 查看帮助 返回 提交作业(截止时间已过) 完成并提交作业 作业批改 互评训练 互评作业 自评作业 成绩公布 查看成绩 温馨提示:本次作业的提交截止时间已过,无法成功提交作业.你可以在输入框中输入答案作为练习,但是所有答案都不会计入最后成绩. 请你练习编写一个C++程序,体会C++程序与C程序的不同之处.由于本作业需要同学们互评,因此作业提交时间期限很短,在题目发布后一周内就必须提交完成.超时的同学将无本次测验成绩,不参加互评会导致成绩被扣分.

网易云课堂_C++程序设计入门(下)_期末考试_期末考试在线编程题目

期末考试在线编程题目 返回考试 本次考试题目一共两个,在考试期间可以不限制次数地提交 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间之前提交答案,系统将取其中的最高分作为最终成绩. 1 编写一个模板类型的 max 函数,求取三个输入的数据中最大的一个,将其输出(10分) 题目内容: 编写一个模板类型的max函数,该函数接收三个参数,返回其中最大的一个. 在主函数中接受键盘输入的三个数据(用空格分隔),并且将最大的一个值输出到屏幕上(

网易云课堂_C++程序设计入门(下)_第7单元:出入虽同趣,所向各有宜 – 文件输入和输出_第7单元 - 作业1:OJ编程

第7单元 - 作业1:OJ编程 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 本作业是第7单元作业系列. 本单元[多个作业]之间有[前后依赖关系]. 本单元作业应[按照次序]完成. 依照学术诚信条款,我保证此作业是本人独立完成的. 1 阅读所给的代码,理解代码的主要功能及原理 补充缺失代码 提交OJ判分(10分) 题目内容: 以单例模式创建一个屏幕Screen

网易云课堂_C++程序设计入门(下)_第11单元:工欲善其事必先利其器 - STL简介_第11单元 - 单元作业1:OJ编程 - vector 与 sort

第11单元 - 单元作业1:OJ编程 - vector 与 sort 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 本次作业练习使用 vector 容器以及 sort 算法,对输入的数据进行排序 依照学术诚信条款,我保证此作业是本人独立完成的. 1 本次作业练习使用 vector 容器以及 sort 算法,对输入的数据进行排序(5分) 题目的具体内容参见 [第