题目链接: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,以至于怀疑连这么简单的题目都不会做,坑死。哪位大神有高见可以留言。

代码如下:

 # include<iostream>
# include<cstdio>
# include<algorithm> using namespace std; int map[][];
int main()
{
int n,sum,step,i,j;
while(scanf("%d",&n) && n)
{
for(i=; i<n; i++)
for(j=; j<n; j++)
scanf("%d",&map[i][j]);
int temp;
sum = step =;
for(i=; i<n/; i++)
{
int tempsum = -,tempstep = ;
for(j=i; j<n-i-; j++)
{
temp = map[j][i] + map[n-i-][j] + map[i][n-j-] + map[n-j-][n-i-];
if(temp > tempsum)
{
tempsum = temp;
tempstep = min(j-i,n-i-j-);
}
}
sum += tempsum;
step += tempstep;
}
printf("%d %d\n",sum+map[n/][n/],step);
}
return ;
}

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

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

 if(temp > tempsum)
{
tempsum = temp;
tempstep = min(j-i,n-i-j-);
}
else if (temp == tempsum)
{
tempstep = min(tempstep, min(j-i, n-i-j-));
}

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

HDU 4708 Rotation Lock Puzzle(模拟)的更多相关文章

  1. HDU 4708:Rotation Lock Puzzle

    Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  2. HDU 4708 Rotation Lock Puzzle (简单题)

    Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. hdu 4708 Rotation Lock Puzzle 2013年ICPC热身赛A题 旋转矩阵

    题意:给出一个n*n的矩阵,旋转每一圈数字,求出对角线可能的最大值,以及转到最大时的最小距离. 只要分析每一层就可以了,本来想用地址传递二维数组,发现行不通,改了一下就行了. 这里有个坑,比如: 1 ...

  4. hduoj 4708 Rotation Lock Puzzle 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4708 Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/O ...

  5. hdu4708 Rotation Lock Puzzle

    Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...

  6. HDUOJ---(4708)Rotation Lock Puzzle

    Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. Rotation Lock Puzzle

    Problem Description Alice was felling into a cave. She found a strange door with a number square mat ...

  8. HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)

    HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...

  9. Python用上锁和解锁 lock lock.acquire lock.release 模拟抢火车票

    Python用上锁和解锁  lock lock.acquire lock.release 模拟抢火车票 import jsonimport timefrom multiprocessing impor ...

随机推荐

  1. Codeforces Round #343 (Div. 2) B. Far Relative’s Problem

    题意:n个人,在规定时间范围内,找到最多有多少对男女能一起出面. 思路:ans=max(2*min(一天中有多少个人能出面)) #include<iostream> #include< ...

  2. HW4.12

    public class Solution { public static void main(String[] args) { int n = 0; while(n * n < 12000) ...

  3. openstack 虚拟机流量

  4. CentOS下源码安装Apache2.4+PHP5.4+MySQL5.5

    一.准备(把所有的源文件放在‘/home/yuanjun’目录下) apr http://mirror.bjtu.edu.cn/apache/apr/apr-1.4.6.tar.gz apr-util ...

  5. Java NIO缓冲

    缓冲区(buffer)是从即将写入通道(channel)或刚刚从通道中读出的一段数据.它是一个持有数据,并扮演NIO通道端点的对象.缓冲区为数据访问和读写过程提供正式机制. 它是NIO和老版Java ...

  6. 关于学习Scala语言的一些感悟

    进入话题! 我们知道哈,Spark源码采用Scala语言编写,那么阅读Spark源码之前,是否一定先学Scala呢? 我个人认为,不必,只要我们有一些java或c++编写语言的基础,就可以看Spaar ...

  7. Notepad++中的颜色属性大全

    Indent guideline style  缩进参考线的颜色 Brace highlight style 鼠标指针在框架左右时框架的颜色(如css中{}   js中的()) Bad brace c ...

  8. Python自动安装第三方类库

    Python在使用过程中会用到大量的第三方库,逐一手工去下载.安装比较繁琐.可以配置第三方镜像源并使用pip进行自动安装.这里推荐选择豆瓣的镜像源:http://pypi.douban.com/sim ...

  9. HDU 3333 & 3874 (线段树+离线询问)

    两个题目都是求区间之内,不重复的数字之和,3333需要离散化处理................. 调试了一下午........说多了都是泪........... #include <iostr ...

  10. MyBatis<forEach/>如何遍历Map参数里的值

    纠结了好一阵子, 最终给我解决了. 直接上代码了: mapper文件: <insert id="saveBlogs"> INSERT INTO blog (user_i ...