C++ 实现正方形黑白瓦片图案最小转换方法求解
```cpp #include <iostream> #include <vector> using namespace std; // 旋转90度 vector<string> rotate90(const vector<string>& pattern) { int n = pattern.size(); vector<string> result(n, string(n, ' ')); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { result[j][n - 1 - i] = pattern[i][j]; } } return result; } // 旋转180度 vector<string> rotate180(const vector<string>& pattern) { return rotate90(rotate90(pattern)); } // 旋转270度 vector<string> rotate270(const vector<string>& pattern) { return rotate90(rotate180(pattern)); } // 反射 vector<string> reflect(const vector<string>& pattern) { int n = pattern.size(); vector<string> result = pattern; for (int i = 0; i < n; i++) { for (int j = 0; j < n / 2; j++) { swap(result[i][j], result[i][n - 1 - j]); } } return result; } // 判断两个图案是否相同 bool isSame(const vector<string>& a, const vector<string>& b) { int n = a.size(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (a[i][j] != b[i][j]) { return false; } } } return true; } int main() { int n; cin >> n; vector<string> original(n), target(n); // 读取原始图案 for (int i = 0; i < n; i++) { cin >> original[i]; } // 读取目标图案 for (int i = 0; i < n; i++) { cin >> target[i]; } // 转90度 if (isSame(rotate90(original), target)) { cout << 1 << endl; } // 转180度 else if (isSame(rotate180(original), target)) { cout << 2 << endl; } // 转270度 else if (isSame(rotate270(original), target)) { cout << 3 << endl; } // 反射 else if (isSame(reflect(original), target)) { cout << 4 << endl; } // 组合 else { vector<string> reflected = reflect(original); if (isSame(rotate90(reflected), target)) { cout << 5 << endl; } else if (isSame(rotate180(reflected), target)) { cout << 5 << endl; } else if (isSame(rotate270(reflected), target)) { cout << 5 << endl; } // 不改变 else if (isSame(original, target)) { cout << 6 << endl; } // 无效转换 else { cout << 7 << endl; } } return 0; } ``` ######[AI问答 | 817点数解答 | 2025-11-25 19:03:09]
- Java 实现计算机硬件模拟:从 PCI 设备到主板、计算机的启动与关闭(字节豆包 | 716点数解答 | 2024-12-08 23:38:38)324
- Java 代码:模拟计算机主板启动与关闭 PCI 设备全流程(字节豆包 | 637点数解答 | 2024-12-09 08:31:54)293
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- Java 实战:Vehicle 类与 User 类实现机动车速度功率控制( | 968点数解答 | 2024-03-12 11:26:25)542
- Java 实战:动物类、接口与继承实现鸟儿吃虫和飞翔功能(字节豆包 | 183点数解答 | 2024-09-19 15:53:55)285
- Java 实战:动物类、接口与继承,实现鸟儿吃虫与飞翔功能(字节豆包 | 184点数解答 | 2024-09-19 16:45:48)308
- Java 实现 BankAccount 类:账户余额管理与测试全解析(字节豆包 | 420点数解答 | 2024-10-11 08:48:21)315
- Java 编程:实现教师与学生类的创建、继承及属性操作(字节豆包 | 745点数解答 | 2024-10-16 18:40:42)390
- Java 实现 Circle 类:全面封装圆的属性与方法(字节豆包 | 256点数解答 | 2024-10-27 16:34:37)243
- Java 实现继承关系:Fu 类、Zi 类与测试类 Example04 代码解析及注意要点(字节豆包 | 251点数解答 | 2024-12-12 09:36:45)246
- Java实现银行账户类:含账户余额操作与测试代码(DeepSeek | 711点数解答 | 2025-03-23 21:38:57)258
- Java 实现银行账户类:含异常处理与日志输出的账户操作详解(字节豆包 | 484点数解答 | 2025-05-05 17:07:36)310