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 }
  • 相关阅读:
    第三方库添加记录
    xcode之语法高亮效果消失解决办法
    将excel记录导入ms sql
    eWebEditor在IE8,IE7下所有按钮无效之解决办法
    关于对数据库中重复记录的操作
    javascript如何取得RadioButtonList的值
    水晶报表分页并自动插入空白行
    如何防止SQL注入
    VC++视频教程下载地址
    如何显示最近过生日的记录
  • 原文地址:https://www.cnblogs.com/windysai/p/3082537.html
Copyright © 2011-2022 走看看