NOJ 5538 c语言

来源:互联网 发布:淘宝实战培训 编辑:程序博客网 时间:2024/06/08 08:30

二维坐标建立的时候从1开始存,把图的周围全变成0方便计算

#include<stdio.h>int n , m,arr[1002][1002];int Map(int x,int y){    int sum=0;    if(arr[x][y] == 0)        return sum;    else    {        if(arr[x][y]-arr[x-1][y] >0)            sum += arr[x][y]-arr[x-1][y];        if(arr[x][y]-arr[x][y+1]> 0)            sum += arr[x][y]-arr[x][y+1];        if(arr[x][y]-arr[x+1][y] > 0)            sum += arr[x][y]-arr[x+1][y];        if(arr[x][y]-arr[x][y-1] > 0)            sum += arr[x][y]-arr[x][y-1];        return sum+1;    }}int main(){    int T,num,i,j;    scanf("%d",&T);    while(T--)    {        num=0;        scanf("%d%d",&n,&m);        for(i=0 ; i <= m ; i++)        {            arr[0][i]=0;            arr[n+1][i]=0;        }        for(i = 1 ; i <= n;i++)            for(j = 1 ; j <= m ; j++)            {                arr[i][j+1]=0;                scanf("%d",&arr[i][j]);            }        for(i = 1 ; i <= n;i++)            for(j = 1 ; j <= m ; j++)            {                num += Map(i,j);           //     printf("地图 %d %d  面积 %d\n",i,j,Map(i,j));            }            printf("%d\n",num);    }    return 0;}
0 0
原创粉丝点击