hdu 4500 小Q系列故事——屌丝的逆袭 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4500

    找规律的题目,找到就很简单了:如果该位置是负整数,则四周的数中,正整数和负整数都要相加;如果该位置是正整数,则四周的数中,如果是负整数,则加上它的绝对值,是正整数则直接相减,归结到底就是无论是正负整数,都要相减。要注意的一点是:要判断越界情况!

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int i, j, max, bi, bj, n, m, pos[22][22], cur[22][22];
 7     while (cin >> n >> m && (m || n))
 8     {
 9         memset(cur, 0, sizeof(cur));
10         memset(pos, 0, sizeof(pos));
11         for (i = 0; i < n; i++)
12         {
13             for (j = 0; j < m; j++)
14                 cin >> pos[i][j];
15         }
16         for (i = 0; i < n; i++)
17         {
18             for (j = 0; j < m; j++)
19             {
20                 if (pos[i][j] < 0)     // 该位置是负整数
21                 {
22                     if (j+1 < m)       // 判断是否越界
23                       cur[i][j] += pos[i][j+1];
24                     if (j-1 >= 0)
25                       cur[i][j] += pos[i][j-1];
26                     if (i-1 >= 0)
27                       cur[i][j] += pos[i-1][j];
28                     if (i+1 < n)
29                       cur[i][j] += pos[i+1][j];        
30                 }
31                 if (pos[i][j] > 0)   // 该位置是正整数
32                 {
33                     if (j+1 < m)
34                       cur[i][j] -= pos[i][j+1];
35                     if (j-1 >= 0)
36                       cur[i][j] -= pos[i][j-1];
37                     if (i-1 >= 0)
38                       cur[i][j] -= pos[i-1][j];
39                     if (i+1 < n)
40                       cur[i][j] -= pos[i+1][j];
41                 }
42             }
43         }
44         max = cur[0][0];
45         for (i = 0; i < n; i++)
46         {
47             for (j = 0; j < m; j++)
48             {
49                 if (max < cur[i][j])
50                 {
51                     max = cur[i][j];
52                     bi = i+1;   //记录行号
53                     bj = j+1;   //记录列号
54                 }
55             }
56         }
57         printf("%d %d %d\n", bi, bj, max);
58     }
59     return 0;
60 }

 

posted @ 2013-05-16 20:37  windysai  阅读(256)  评论(0编辑  收藏  举报