【OpenJudge】寻找山顶

来源:互联网 发布:淘宝名鞋库 编辑:程序博客网 时间:2024/05/17 03:59

06:寻找山顶

  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms 
内存限制: 
65536kB
描述

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

输入
第一行是两个整数,表示山地的长m(5≤m≤20)和宽n(5≤n≤20)。
其后m行为一个m×n的整数矩阵,表示每个地块的平均高程。每行的整数间用一个空格分隔。
输出
输出所有上顶所在地块的位置。每行一个。按先m值从小到大,再n值从小到大的顺序输出。
样例输入
10 50 76 81 34 661 13 58 4 405 24 17 6 6513 13 76 3 208 36 12 60 3742 53 87 10 6542 25 47 41 3371 69 94 24 1292 11 71 3 8291 90 20 95 44
样例输出
0 20 42 12 43 03 24 35 25 47 28 08 49 3

  • 查看 
  • 提交 
  • 统计 
  • 提问
    • #include<stdio.h>#define N 20int main(){    int m,n;    int high[N][N];    int flag[N][N];    int (*f)[N]=flag;    int (*ph)[N] = high;    scanf("%d %d",&m,&n);    for(int i=0;i<m;i++)    {        for(int j=0;j<n;j++)        {            scanf("%d",*(ph+i)+j);        }    }    for(int i=0;i<m;i++)    {        for(int j=0;j<n;j++)        {           /* if(i=0) ph[i-1][j]= 0;//这四句没用            if(i=m-1) ph[i+1][j]= 0;            if(j=0) ph[i][j-1]= 0;            if(j=n-1) ph[i][j+1]= 0;            printf("i-1 = %d\n",ph[i-1][j]);            if((ph[i][j]>ph[i-1][j])&&(ph[i][j]>ph[i+1][j])&&(ph[i][j]>ph[i][j-1])&&(ph[i][j]>ph[i][j+1]))            {                printf("%d %d\n",i,j);            }*/            bool shan = true;            if (shan && i-1>=0) {                if (ph[i][j]<ph[i-1][j]) {                    shan = false;                }            }            if (shan && i+1<m) {                if (ph[i][j]<ph[i+1][j]) {                    shan = false;                }            }            if (shan && j-1>=0) {                if (ph[i][j]<ph[i][j-1]) {                    shan = false;                }            }            if (shan && j+1<n) {                if (ph[i][j]<ph[i][j+1]) {                    shan = false;                }            }            if (shan) {                printf("%d %d\n", i, j);        }    }    }    return 0;}


0 0
原创粉丝点击