尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CF958A1 Death Stars (easy) 解题报告

CF958A1 Death Stars (easy) 解题报告
📅 发布时间:2026/6/21 9:05:24

题目传送门

题目大意

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

解题思路

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

算法:模拟所有情况。

首先我们先画出一张简单的表模拟一下(设两张表分别为 \(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;
}

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

相关新闻

  • PS 例程大全
  • 如何利用JSP实现信创环境的大文件上传?
  • 实习面试题-Kotlin 面试题

最新新闻

  • 2026 安徽省宠物护理特色专业招录,咨询方式看最新简章 - cc江江
  • 元气AI助手实战指南:结构化信息处理与工作流嵌入方法
  • Windows文件管理器终极美化指南:用ExplorerBlurMica打造透明梦幻界面
  • Gemini 3.1 Pro作为合规型数据协作者的实战方法论
  • 链路层:亲密的网络旅程(二十二):在互联网上架设一座“秘密空中立交桥”——隧道技术、GRE与PPTP深度解析
  • Flask应用SSTI漏洞自动化检测:Python脚本实现与Jinja2安全实践

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号