当前位置: 首页 > news >正文

CF958A1 Death Stars (easy) 解题报告

题目传送门

题目大意

给出两张只含有 XO 的表,问是否能通过旋转和翻转把其中一个变为另一个。

解题思路

这题一看就是一道大水题!!!

算法:模拟所有情况。

首先我们先画出一张简单的表模拟一下(设两张表分别为 \(A\)\(B\)):

初始的 \(A\)

\(A\) \(B\)
\(C\) \(D\)

这里一共有 \(8\) 种对 \(A\) 操作后的表:

顺时针:\(ABCD\)(四种)

逆时针:\(DCBA\)(四种)

Details:

  1. 不进行改变
\(A\) \(B\)
\(C\) \(D\)

对应布尔判断式 \(A_{i,j}=B_{i,j}\)\(A\) 操作后对应 \(B\) 的位置);

  1. 竖直翻转一次
\(C\) \(D\)
\(A\) \(B\)

对应布尔判断式 \(A_{i,j}=B_{n-i+1,j}\)

  1. 水平翻转一次
\(B\) \(A\)
\(D\) \(C\)

对应布尔判断式 \(A_{i,j}=B_{i,n-j+1}\)

  1. 水平翻转一次再竖直翻转一次
\(D\) \(C\)
\(B\) \(A\)

对应布尔判断式 \(A_{i,j}=B_{n-i+1,n-j+1}\)

  1. 左旋 \(90^{\circ}\) 再竖直翻转一次
\(A\) \(C\)
\(B\) \(D\)

对应布尔判断式 \(A_{i,j}=B_{j,i}\)

  1. 左旋 \(90^{\circ}\) 再竖直翻转一次再竖直翻转一次
\(B\) \(D\)
\(A\) \(C\)

对应布尔判断式 \(A_{i,j}=B_{n-j+1,i}\)

  1. 左旋 \(90^{\circ}\) 再竖直翻转一次再水平翻转一次
\(C\) \(A\)
\(D\) \(B\)

对应布尔判断式 \(A_{i,j}=B_{j,n-i+1}\)

  1. 左旋 \(90^{\circ}\) 再竖直翻转一次再水平翻转一次再竖直翻转一次
\(D\) \(B\)
\(C\) \(A\)

对应布尔判断式 \(A_{i,j}=B_{n-j+1,n-i+1}\)

经证明,其他所有翻转旋转情况都是这 \(8\) 种情况的任意一种。

AC Code

#include<iostream>
#include<cstdio>
#define N 12
using namespace std;
int n,flag;
char A[N][N],B[N][N];
signed main()
{cin>>n;for(int i=1;i<=n;i++)cin>>(A[i]+1);for(int i=1;i<=n;i++)cin>>(B[i]+1);flag=1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(A[i][j]!=B[i][j])//枚举每一种 flag=0;if(flag)puts("Yes"),exit(0);//某种情况符合直接输出 Yes,然后结束程序 flag=1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(A[i][j]!=B[n-i+1][j])flag=0;if(flag)puts("Yes"),exit(0);flag=1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(A[i][j]!=B[i][n-j+1])flag=0;if(flag)puts("Yes"),exit(0);flag=1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(A[i][j]!=B[n-i+1][n-j+1])flag=0;if(flag)puts("Yes"),exit(0);flag=1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(A[i][j]!=B[j][i])flag=0;if(flag)puts("Yes"),exit(0);flag=1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(A[i][j]!=B[n-j+1][i])flag=0;if(flag)puts("Yes"),exit(0);flag=1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(A[i][j]!=B[j][n-i+1])flag=0;if(flag)puts("Yes"),exit(0);flag=1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(A[i][j]!=B[n-j+1][n-i+1])flag=0;if(flag)puts("Yes"),exit(0);puts("No");//都不符合,输出 No  return 0;
}

屎山代码有点难看,不过还是通俗易懂的吧。

http://www.rkmt.cn/news/98678.html

相关文章:

  • PS 例程大全
  • 如何利用JSP实现信创环境的大文件上传?
  • 实习面试题-Kotlin 面试题
  • JSP中如何利用分块技术实现百万文件上传优化?
  • Vim 分屏操作详解
  • wangEditor粘贴ppt母版样式自动适配网页
  • 63、技术综合指南:系统配置、数据库管理与网络应用
  • 嗨! Coze 的 AI 漫游:解锁智能体与工作流,轻松拿捏智能应用(1) - 实践
  • 50、Mono应用开发与Linux机器安全防护
  • 51、Linux 系统安全防护全攻略
  • 告别 AI 信息焦虑!这 5 个公众号,帮你轻松跟上智能时代节奏 - 品牌鉴赏师
  • 52、系统性能调优指南
  • Unity学习笔记(十七)GUI控件(一)
  • Origin科研绘图——手把手教你“分段拟合”
  • 53、Linux 系统优化与命令行操作指南
  • 54、Linux命令行与软件管理全攻略
  • 2025年年终无人机吊运公司推荐:不同预算与项目规模下的性价比分析与5家服务商对比 - 品牌推荐
  • 56、Linux内核与模块管理全解析
  • 英语_阅读_CIMON 2_待读
  • vue基于Spring Boot框架的学生干部选举管理系统的设计与实现_4q46dzc1
  • 35、脚本开发中的故障排除、流程控制与参数处理
  • 如何选择靠谱的无人机吊运服务商?2025年年终最新市场深度解析及5家实力公司推荐! - 品牌推荐
  • 26、GNOME开发中的实用组件与功能详解
  • 27、GNOME开发:Druids、会话管理及Glade使用指南
  • Comsol仿真:相场法多晶铁电体介电击穿模拟全解析
  • 27、Unix 系统下的文档格式化与打印指南
  • vue基于Spring Boot框架的新生入学报道管理系统_j956n3k5
  • vue基于Spring Boot框架的药店药品线上购买管理系统_lo96r78o
  • SQL的分类
  • vue基于Spring Boot框架的技术的网上购物商城系统开发商家_9ah8o18s