#35-【刷题】乐乐的方块
Description
乐乐被小学数学课本中“空间与图形”的内容迷住了,她整天在琢磨着图形的各种变换:对称、旋转、翻转等等。这天,乐乐用“@”和“-”两种字符拼成了一块N x N(1≦N≦20)的方形图案A,现在她想将其转换成新的方形图案B。有以下几种转换方法:
方法1:转90度:图案按顺时针转90度。
方法2:转180度:图案按顺时针转180度。
方法3:转270度:图案按顺时针转270度。
方法4:反射:图案在水平方向翻转。
方法5:组合:图案在水平方向翻转,然后再按照1到3之间的一种再次转换。
方法6:不改变:原图案不改变。
方法7:无效转换:无法用以上方法得到新图案。
只能选择上述7种方法中的某一种来转换图案。例如有如下一个3*3的图案A:
@-@
---
@-@
要转换成图案B:
@-@
---
@-@
按照上述的方法,有方法2、方法4和方法6共三种方法可以实现这种转换。你只需要输出:2,表示采用序号最小的方法。
你能帮助乐乐写一个程序,来解决这个难题吗?
Input
第1行:单独的一个整数N。
第2行到第N+1行:每行N个字符(不是“@”就是“-”);这是转换前的方块图案。
第N+2行到第2*N+1行:每行N个字符(不是“@”就是“-”);这是转换后的方块图案。
Output
单独的一行包括1到7之间的一个数字,表明需要将转换前的方块变为转换后的方块的转换方法(序号最小者)。
Sample Input
输入样例1:3@-@---@@-@-@@----@输入样例2:4----@@@@--@@------@----@-@@--@@-
Sample Output
输出样例1:1输出样例2:7
#include <iostream>#define SIZE 1500using namespace std;bool a[SIZE][SIZE], b[SIZE][SIZE], t[SIZE][SIZE], t2[SIZE][SIZE], t3[SIZE][SIZE];
int n;bool comp(bool a[SIZE][SIZE], bool b[SIZE][SIZE]) // 判等
{int i, j;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){if (a[i][j] != b[i][j]){return false;}}}return true;
}/*
123
456
789741
852
963
*/bool function1(bool a[SIZE][SIZE]) // 第一种方法
{int i, j;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){t[i][j] = a[n-j+1][i];}}return comp(t, b);
}/*
123
456
789987
654
321
*/
bool function2(bool a[SIZE][SIZE]) // 第二种方法
{int i, j;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){t[i][j] = a[n-i+1][n-j+1];}}return comp(t, b);
}/*
123
456
789369
258
147
*/
bool function3(bool a[SIZE][SIZE]) // 第三种方法
{int i, j;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){t[i][j] = a[j][n-i+1];}}return comp(t, b);
}/*
123
456
789321
654
987
*/
bool function4(bool a[SIZE][SIZE])
{int i, j;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){t[i][j] = a[i][n-j+1];}}return comp(t, b);
}bool function5(bool a[SIZE][SIZE])
{int i, j;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){t2[i][j] = a[i][n-j+1];}}for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){t3[i][j] = t2[i][j];}}if (function1(t3)){return true;}for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){t3[i][j] = t2[i][j];}}if (function2(t3)){return true;}for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){t[i][j] = t2[i][j];}}if (function3(t3)){return true;}return false;
}int main(int argc, char** argv)
{int i, j;char c;cin >> n;for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){cin >> c;if (c == '@'){a[i][j] = true; // 字符存在bool数组内}}}for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){cin >> c;if (c == '@'){b[i][j] = true;}}}if (function1(a)){cout << 1 << endl;return 0;}if (function2(a)){cout << 2 << endl;return 0;}if (function3(a)){cout << 3 << endl;return 0;}if (function4(a)){cout << 4 << endl;return 0;}if (function5(a)){cout << 5 << endl;return 0;}if (comp(a, b)){cout << 6 << endl;return 0;}cout << 7 << endl;return 0;
}
#35-【刷题】乐乐的方块相关推荐
- 力扣(LeetCode)刷题,简单+中等题(第35期)
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...
- 不止是刷题——leetcode笑死人的评论合集,独乐乐不如众乐乐~~
最近一直在leetcode上刷题,爱学习的我发现了评论区里不只有答疑解惑的大神们,还潜伏着众多神兽和段子手们,截图出来,与诸君共享,程序猿的乐趣不是一般人能懂得~~ --本文由非正经程序猿吴向深独家撰 ...
- C#LeetCode刷题-二叉搜索树
二叉搜索树篇 # 题名 刷题 通过率 难度 220 存在重复元素 III 19.3% 中等 315 计算右侧小于当前元素的个数 31.9% 困难 327 区间和的个数 29.5% 困难 352 将数据 ...
- 某厂机试算法刷题一览
牛客网-华为笔试面试机考在线练习 力扣刷题 All posts in 德科机试一星题 A机试叮当猫-华为机试真题 GavenHwang的博客-华为机试 coder 明轩博客-华为机试23题总结 目录 ...
- leetcode刷题目录总结
题目 题目 技巧 相似的题目 其他 1. 无序数组中找出目标为target的两个数 先定义下一个数,然后找两位的数是否存在 高频, 大厂刷题班, 第27节 2.逆序链表两数相加 链表.各位加法 高频, ...
- 如果不是为了面试,AI工程师刷题有用吗?
面试官手把手带你刷题 AI岗位面试题 5周详解+训练 今天限时特价9.9元 在准备应聘的过程中,大部分同学关注点都在自己的技术水平以及项目经验是否能够比过其他人.但往往忽略了一点,你会的和你在面试中能 ...
- 漫画:小白为了面试如何刷题?(呕心沥血算法指导篇)
来自:小浩算法 三年高考,五年刷题.leetcode不算从其他各处收录的题目,单就自己的题库,总共有1600+,如果按照每天刷一道的话,总共需要5年.那我们真的需要把这些题目全部刷完吗?如果不是,刷多 ...
- 你面试稳了!通关LeetCode刷题完整攻略,省时又高效
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:穷码农 来源:https://zhuanlan.zhihu.com/p/10 ...
- 【Leetcode】刷题题单记录
程序=算法+数据结构,不管干哪一行,只要涉及到编程算法始终是最重要的!!! 算法基础差,变做题巩固!!! LeetCode刷题,搞起来! 由于我只会C++和Python, 所以题解只有C++ 和 Py ...
- $2019$ 暑期刷题记录 $2$(基本算法专题)
$ 2019 $ 暑期刷题记录 $ 2 $ (基本算法专题) $ by~~wch $ $ BZOJ~1958~Strange~Towers~of~Hanoi $ (动态规划,递推) 题目大意: 求有 ...
最新文章
- haar 人脸检测跟踪源码整理
- 《人人都是产品经理》阅读笔记一
- brain teasers
- 绝对简单,就是将我自己的工作量估算乘2!!!
- 三 mybatis typeAlias(别名)使用和resultMap使用
- 收入超10亿?罗永浩:要真有这个收入 我早就还完债做智能产品去了
- html里content标签作用,HTML content 标签
- 2020年入门数据分析选择Python还是SQL?七个常用操作对比!
- 音频、视频等文件格式(.ts、.meta)及其认识
- 详解.NET IL代码
- Futter基础第5篇: 实现列表、动态列表【ListView、ListView.builder】
- 机器学习(非线性回归)
- 计算机一级B考试总结500字,第一次月考总结与反思500字
- uniapp (H5、小程序、app)地图导航
- 论文笔记1 | 使用CTC对湍流工业火焰进行瞬时三维重建
- android 服务器201,【报Bug】h5+app 网络请求 状态码返回201会报错200不会
- 2003server计算机管理里面没有本地用户和组
- 神气蹦蹦 - 我原创可爱游戏
- python+HTMLTable,生成html表格
- Android监听按键锁屏广播
热门文章
- 怎么把桌面添加到计算机的收藏夹,电脑浏览器怎么把书签添加到桌面
- Chapter2.4:数学模型考研参考题
- python复数类型转换_Python程序设计——复数运算(包括极坐标转换)
- 华为Mate 20 Pro更新EMUI9.1系统,系统流畅度稳步提高
- 计算机的USB是什么,usb2.0和3.0的区别,教您电脑usb2.0和3.0的有什么区别
- 刚挣钱的程序猿同学该怎样花钱?
- Win11如何把d盘空间分给c盘?Win11d盘分盘出来给c盘的方法
- 我爱赚钱吧:你也可以通过建网站赚钱的④
- Java DateUtil 时间工具类
- 如何安装Mac 下的markman破解版