zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    84最佳买卖股票时机含冷冻期(309)
    83 不同路径 II(63)
    82同路径(62)
    模块与包
    名称空间与作用域
    函数的参数
    函数对象
    函数继续学习中
    python学习day3-上午
    第一个完成程序:通过文件实现注册登录
  • 原文地址:https://www.cnblogs.com/windysai/p/3082537.html
Copyright © 2011-2022 走看看