码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-04-20 21:41:48      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

 

 

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

 

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

标签:

原文地址:http://www.cnblogs.com/denggelin/p/5414107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!