• HDU 4708 Rotation Lock Puzzle(模拟)


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

    题目大意:给定一个方形矩阵,边长为3-10的奇数。每一圈的数字可以沿着顺时针方向和逆时针方向旋转,求使得矩阵主对角线和反对角线和最大时的数以及需要旋转的最小步骤。

    Sample Input
    5
    9 3 2 5 9
    7 4 7 5 4
    6 9 3 9 3
    5 2 8 7 2
    9 9 4 1 9
    0
     
    Sample Output
    72 1

    分析:简单的模拟。分别计算每一圈旋转后的四个角的值最大需要的步骤(取顺时针、逆时针最小)。

      但是我有理由相信这道题目有问题。因为矩阵是正方形,所以把原来的矩阵“躺下”,横竖坐标互换一下,即在输入时不是输入map[i][j] 而是 map[j][i],这样答案应该也是正确的,但是OJ却返回WA。因为这一点,最开始时计算每一圈四个角时的横竖坐标全都互换了,却半天不能AC,以至于怀疑连这么简单的题目都不会做,坑死。哪位大神有高见可以留言。

    代码如下:

     1 # include<iostream>
     2 # include<cstdio>
     3 # include<algorithm>
     4 
     5 using namespace std;
     6 
     7 int map[10][10];
     8 int main()
     9 {
    10     int n,sum,step,i,j;
    11     while(scanf("%d",&n) && n)
    12     {
    13         for(i=0; i<n; i++)
    14             for(j=0; j<n; j++)
    15                 scanf("%d",&map[i][j]);
    16         int temp;
    17         sum = step =0;
    18         for(i=0; i<n/2; i++)
    19         {
    20             int tempsum = -9999999,tempstep = 0;
    21             for(j=i; j<n-i-1; j++)
    22             {
    23                 temp = map[j][i] + map[n-i-1][j] + map[i][n-j-1] + map[n-j-1][n-i-1];
    24                 if(temp > tempsum)
    25                 {
    26                     tempsum = temp;
    27                     tempstep = min(j-i,n-i-j-1);
    28                 }
    29             }
    30             sum += tempsum;
    31             step += tempstep;
    32         }
    33         printf("%d %d
    ",sum+map[n/2][n/2],step);
    34     }
    35     return 0;
    36 }

     

     大神就是大神,一下子看出了问题所在,下面是一位大虾点出来的

    你少考虑了一种情况,或者说你那个AC的代码其实是错的。

    1 if(temp > tempsum)
    2 {
    3     tempsum = temp;
    4     tempstep = min(j-i,n-i-j-1);
    5 }
    6 else if (temp == tempsum)
    7 {
    8     tempstep = min(tempstep, min(j-i, n-i-j-1));
    9 }

    果然是少考虑了,就算再做简单题也不能马虎了

  • 相关阅读:
    html常用标签及示例
    判断一个数是否是素数的讨论
    图像的空间域变化
    图像增强的点运算(一)
    字符串匹配——KMP
    AcWing1134最短路计数(spfa)
    AcWing1137拯救大兵瑞恩(双端队列搜索,状态压缩,分层图最短路)
    AcWing1175电路维修(双端队列+搜索)
    AcWing1137选择最佳线路(最短路)
    AcWing342道路与航线(dijkstra+拓扑排序)
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/3323484.html
Copyright © 2020-2023  润新知