寻找山顶



【描述】

在一个m×n的山地上,已知每个地块的平均高程,请求出所有山顶所在的地块(所谓山顶,就是其地块平均高程不比其上下左右相邻的四个地块每个地块的平均高程小的地方)

【输入】

第一行是两个整数,表示山地的长m5m20)和宽n5n20),整数以空格间隔。

其后m行为一个m×n的整数矩阵,表示每个地块的平均高程。每行的整数间以空格间隔。

【输出】

输出所有山顶所在地块的位置。每行一个。按先m值从小到大,再n值从小到大的顺序输出。

【输入示例】

105

076 81 34 66

113 58 4 40

524 17 6 65

1313 76 3 20

836 12 60 37

4253 87 10 65

4225 47 41 33

7169 94 24 12

9211 71 3 82

9190 20 95 44

【输出示例】

0 2

0 4

2 1

2 4

3 0

3 2

4 3

5 2

5 4

7 2

8 0

8 4

9 3

C代码】

---------------

#include<stdio.h>

intmain(void) {

int matrix[21][21];

int i, j, m, n;

int x, y, flag;;

scanf("%d%d", &m, &n);

for(i = 0; i < m; ++i)

for(j = 0; j < n; ++j)

scanf("%d", &matrix[i][j]);   

for(i = 0; i < m; ++i) {

for(j = 0; j < n; ++j) {

flag = 1;

/* 上方 */

x = i - 1;

y = j;

if(flag == 1 && x >= 0)

if(matrix[i][j] < matrix[x][y])

flag = 0;     /* 不是山顶 */

/* 下方 */

x = i + 1;

y = j;

if(flag == 1 && x < m)

if(matrix[i][j] < matrix[x][y])

flag = 0;     /* 不是山顶 */

/* 左方 */

x = i;

y = j - 1;

if(flag == 1 && y >= 0)

if(matrix[i][j] < matrix[x][y])

flag = 0;     /* 不是山顶 */

// 右方

x = i;

y = j + 1;

if(flag == 1 && y < n)

if(matrix[i][j] < matrix[x][y])

flag = 0;     /* 不是山顶 */

if(flag)

printf("%d %d\n", i, j);

}

}

return 0;

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值