news 2026/5/4 14:01:29

P1205 方块转换 Transformations【洛谷算法习题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
P1205 方块转换 Transformations【洛谷算法习题】

P1205 方块转换 Transformations

网页链接

P1205 方块转换 Transformations

题目描述

一块n × n n \times nn×n正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式:

  • 90 ° 90\degree90°:图案按顺时针转90 ° 90\degree90°

  • 180 ° 180\degree180°:图案按顺时针转180 ° 180\degree180°

  • 270 ° 270\degree270°:图案按顺时针转270 ° 270\degree270°

  • 反射:图案在水平方向翻转(以中央铅垂线为中心形成原图案的镜像)。

  • 组合:图案在水平方向翻转,然后再按照1 ∼ 3 1 \sim 313之间的一种再次转换。

  • 不改变:原图案不改变。

  • 无效转换:无法用以上方法得到新图案。

如果有多种可用的转换方法,请选择序号最小的那个。

只使用上述7 77个中的一个步骤来完成这次转换。

输入格式

第一行一个正整数n nn

然后n nn行,每行n nn个字符,全部为@-,表示初始的正方形。

接下来n nn行,每行n nn个字符,全部为@-,表示最终的正方形。

输出格式

单独的一行包括1 ∼ 7 1 \sim 717之间的一个数字(在上文已描述)表明需要将转换前的正方形变为转换后的正方形的转换方法。

输入输出样例 #1

输入 #1

3 @-@ --- @@- @-@ @-- --@

输出 #1

1

说明/提示

【数据范围】
对于100 % 100\%100%的数据,1 ≤ n ≤ 10 1\le n \le 101n10

题目翻译来自 NOCOW。

USACO Training Section 1.2

解题思路

本题核心是矩阵变换模拟+按优先级校验,严格按照题目要求的转换序号顺序判断最优解。首先实现两个基础变换函数:顺时针旋转90度、水平镜像翻转,180度/270度旋转通过重复调用旋转函数实现,组合变换为翻转后叠加旋转。按照序号1→2→3→4→5→6的优先级,依次对原始矩阵执行对应变换,每变换一次就与目标矩阵比对,一旦匹配立即输出对应序号;若所有变换都不匹配,输出7代表无效转换。由于数据规模n ≤ 10 n≤10n10,暴力模拟变换过程简洁高效,完全满足题目要求。

总结

核心逻辑:按题目指定的序号优先级,模拟所有合法矩阵变换,逐一匹配目标矩阵。
关键操作:实现旋转、翻转基础变换,按序校验匹配结果。
效率保障:小数据暴力模拟,代码简洁直观,严格遵循题目规则。

代码内容

#include<iostream>#include<vector>#include<string>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e3+10;constll p=1e9+7;constll INF=1e18;constll M=1e6+10;typedefvector<string>G;Gr90(constG&g){intn=g.size();Gr(n,string(n,' '));for(inti=0;i<n;++i)for(intj=0;j<n;++j)r[j][n-1-i]=g[i][j];returnr;}Gref(constG&g){intn=g.size();G r=g;for(inti=0;i<n;++i)for(intj=0;j<n/2;++j)swap(r[i][j],r[i][n-1-j]);returnr;}booleq(constG&a,constG&b){intn=a.size();for(inti=0;i<n;++i)for(intj=0;j<n;++j)if(a[i][j]!=b[i][j])returnfalse;returntrue;}intmain(){intn;cin>>n;Ga(n),b(n);for(inti=0;i<n;++i)cin>>a[i];for(inti=0;i<n;++i)cin>>b[i];G r=a;for(inti=1;i<=3;++i){r=r90(r);if(eq(r,b)){cout<<i<<endl;return0;}}G rf=ref(a);if(eq(rf,b)){cout<<4<<endl;return0;}r=rf;for(inti=1;i<=3;++i){r=r90(r);if(eq(r,b)){cout<<5<<endl;return0;}}if(eq(a,b)){cout<<6<<endl;return0;}cout<<7<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 13:55:27

Notepad--跨平台文本编辑器文件关联机制技术解析

Notepad--跨平台文本编辑器文件关联机制技术解析 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器&#xff0c;目标是做中国人自己的编辑器&#xff0c;来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- Notepad--作为一款基于…

作者头像 李华
网站建设 2026/5/4 13:52:27

Nigate:彻底解决Mac读写NTFS硬盘难题的免费开源方案

Nigate&#xff1a;彻底解决Mac读写NTFS硬盘难题的免费开源方案 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management for …

作者头像 李华
网站建设 2026/5/4 13:50:58

保姆级教程:手把手教你用R包clusterProfiler和fgsea完成GSEA分析与可视化

R语言实战&#xff1a;从零掌握clusterProfiler与fgsea的GSEA全流程解析 在生物信息学领域&#xff0c;基因集富集分析(GSEA)已成为解读高通量组学数据的黄金标准。与传统的GO/KEGG富集分析不同&#xff0c;GSEA能够捕捉基因表达谱中那些微妙但协调的变化模式&#xff0c;揭示隐…

作者头像 李华
网站建设 2026/5/4 13:49:21

用科技传递心意:礼物网站如何通过偏好挖掘提升用户体验?

在当今这个数字化飞速发展的时代&#xff0c;科技不仅深刻改变了人们的生活方式&#xff0c;也在无形中重塑着人与人之间的情感连接。礼物&#xff0c;作为传递心意的重要载体&#xff0c;其选择过程往往充满了思考与期待。然而&#xff0c;面对琳琅满目的商品&#xff0c;如何…

作者头像 李华