HDU 4500 小Q系列故事——屌丝的逆袭

 算是一道模拟题吧

要注意加减就行了,可是我搞错了,wa了11次,嘿嘿,粗心啊。。。

#include <stdio.h>
#include <string.h>
#define maxn 30

int n , m , pos[maxn][maxn] , ans[maxn][maxn];
int dx[] = {1,0,-1,0};
int dy[] = {0,1,0,-1};
int _x,_y,_max;

void init(){
    _max = -10001;
    for(int i=0;i<=25;i++){
        for(int j=0;j<=25;j++){
            ans[i][j] = -10001;
        }
    }
}

int sco(int x,int y){
    int res =0 ;
    for(int i=0;i<4;i++){
        int nx = x + dx[i] , ny = y + dy[i];
        if(nx<1 || nx>n || ny<1 || ny>m) continue;
            if(pos[x][y] > 0) res -= pos[nx][ny];
            else   res += pos[nx][ny];
    }
    return res;
}

void dp()
{
    init();
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            ans[i][j] = sco(i,j);
            //printf("%d ",ans[i][j]);
            if(ans[i][j] > _max){
                _max = ans[i][j];
                _x = i , _y = j;
            }
        }
        //printf("
");
    }
}

int main()
{
    while(~scanf("%d %d",&n,&m) , n&&m)
    {
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                scanf("%d",&pos[i][j]);
            }
        }
        dp();
        printf("%d %d %d
",_x,_y,_max);
    }
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/cton/p/3439931.html