博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2013杭电warm up1 Rotation Lock Puzzle
阅读量:7293 次
发布时间:2019-06-30

本文共 1437 字,大约阅读时间需要 4 分钟。

题目地址:

首先来学习一个ac的代码:

作者 

#include
#include
#include
#include
#include
#include
#include
#include
#define INF 99999999using namespace std;const int MAX=10;int s[MAX][MAX];int main(){ int n; while(scanf("%d",&n),n){ for(int i=0;i
temp){ temp=s[i+j][i]+s[n-1-i][i+j]+s[i][n-1-i-j]+s[n-1-i-j][n-1-i]; k=j; } } sum+=temp; num+=min(k,n-2*i-1-k); } cout<
这个能ac ,但是思路有所欠缺,数据严格一些就会wa  因为只考虑了顺时针转,如果再转一次使min(k,n-1-2*i-k) 更小,然而temp值相等(不满足>) k就不会更新。

但是sum算得是对的。

正确的方法是再处理一下逆时针转的结果 最后取较小值。

代码:

#include
#include
using namespace std;int a[10][10];int min(int a,int b){ return a
>n) { if(n==0) break; for(int i=0;i
max) { step1=n-1-2*i-j; max=cur; } } ans+=max; // max怎么旋转来算都行 max=-100000000; for(int j=0;j
max) { max=cur; step2=j; } } step1=min(step1,n-1-2*i-step1); step2=min(step2,n-1-2*i-step2); steps+=min(step1,step2); } ans+=a[k][k]; cout<
<<' '<
<

这个暴力水题还是有点玄机的。

瑕疵是我一开始只做了逆时针旋转,总是wa找出来的

本题的另一个关键点是找出第i层的4个顶点的坐标 (有增量j时) 这个要结合几何性质就很明显了,第一个和第三个,是关于正方形中心中心对称的。

转载于:https://www.cnblogs.com/814jingqi/p/3339256.html

你可能感兴趣的文章
三台主机部署lamp(fast-cgi)
查看>>
ASM磁盘超过disk_repair_time导致磁盘状态为forcing
查看>>
微信小程序上拉、下拉、动态设置窗口背景色
查看>>
uboot bootargs bootcmd bootm
查看>>
Java对XML属性解析功能
查看>>
【AD用户设置系列一】让IT省心省力的漫游配置文件
查看>>
C(++) web实时消息服务器后台推送技术方案---GoEasy
查看>>
软件测试的三大测试方向比较
查看>>
Linux日知录(常用问题笔记)
查看>>
CentOS7利用yum安装node.js
查看>>
Tomcat 应用多次重启失败,查看日志:UnknownHostException,可能是DNS故障
查看>>
centos7 安装nginx 完整步骤
查看>>
第3章 代码块
查看>>
JavaWeb23-HTML篇笔记(二)
查看>>
Linux 后台运行管理
查看>>
洞悉物联网发展1000问之为什么物联网会有真假智慧?
查看>>
node.js如何发送以太坊交易?
查看>>
弱口令检测——John the Ripper
查看>>
8月技术指标
查看>>
四月个人指标,linux基本操作
查看>>