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

UVa227puzzle

这个题我写的不对,照刘汝佳的写了ac过了,但是问了一下AI思路不太一样
AI给我一个建议:
从“菜鸟”到“专家”的解题境界

这个过程的背后,反映的是解题水平的四个层层递进的境界:

· 菜鸟:复制粘贴别人的代码。
· 新手:自己写出了代码,能AC,但自己感觉有点磕磕绊绊。
· 高手:不仅自己写出了代码,还能清晰地讲述“我为什么这么写”,“我预测的陷阱在哪里”。
· 专家:能反过来为一道题设计出巧妙的陷阱,比如故意在输入时添加难以察觉的空格来考验选手。

只要坚持这样思考,从新手迈向高手是早晚的事!

点击查看代码
// UVA 227 - Puzzle
// 解法:模拟 + 方向数组 + 严格处理输入输出
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;char puzzle[5][5];    // 5x5 网格
int zx, zy;           // 空格(空白块)的位置 (行,列)
int kase = 0;         // 记录第几个 puzzle,用于输出空行// 方向映射: A=上, B=下, L=左, R=右
const int dx[128] = {0};   // 直接用字符作为索引
const int dy[128] = {0};
// 实际初始化放在 main 里 (因为 C++ 不支持非 const 的数组初始化列表?可以用下面的方式)
void init_dir() {// 利用 ASCII 码,给字符 'A','B','L','R' 赋值移动偏移dx['A'] = -1; dy['A'] = 0;dx['B'] =  1; dy['B'] = 0;dx['L'] =  0; dy['L'] = -1;dx['R'] =  0; dy['R'] =  1;
}int main() {init_dir();while (true) {// ---------- 输入 5x5 网格 ----------// 读第 0 行string line;getline(cin, line);if (line == "Z") break;          // 结束标志// 将第一行复制到 puzzle[0]for (int j = 0; j < 5; ++j) {puzzle[0][j] = line[j];if (line[j] == ' ') { zx = 0; zy = j; }}// 读接下来的 4 行for (int i = 1; i < 5; ++i) {getline(cin, line);// 题目保证每行正好 5 个字符(可能有空格)for (int j = 0; j < 5; ++j) {puzzle[i][j] = line[j];if (line[j] == ' ') { zx = i; zy = j; }}}// ---------- 读指令序列(可能跨多行,以 '0' 结束)----------string moves = "";string cmd;while (true) {getline(cin, cmd);size_t pos = cmd.find('0');if (pos != string::npos) {moves += cmd.substr(0, pos);   // 去掉 '0' 及其之后的内容break;} else {moves += cmd;}}// ---------- 执行移动 ----------bool ok = true;for (char ch : moves) {int nx = zx + dx[ch];int ny = zy + dy[ch];if (nx < 0 || nx >= 5 || ny < 0 || ny >= 5) {ok = false;break;}// 交换空格和相邻格子的字符swap(puzzle[zx][zy], puzzle[nx][ny]);zx = nx; zy = ny;}// ---------- 输出结果 ----------if (kase > 0) cout << endl;   // 两个 puzzle 之间空行cout << "Puzzle #" << ++kase << ":\n";if (!ok) {cout << "This puzzle has no final configuration.\n";} else {for (int i = 0; i < 5; ++i) {for (int j = 0; j < 5; ++j) {if (j) cout << ' ';cout << puzzle[i][j];}cout << '\n';}}}return 0;
}
http://www.jsqmd.com/news/960962/

相关文章:

  • TensorFlow 2.x版DDPG完整实现:含双Q网络、策略网络与优先经验回放
  • 呼和浩特2026靠谱贵金属回收排行榜|黄金铂金彩金白银回收门店地址电话一览 - 余生黄金回收
  • Python桌面OCR小工具:拖图识别、框选校正、结果一键复制
  • 别再只会用轮询了!用SpringBoot WebSocket给你的老旧管理系统加个实时消息中心(附完整前后端代码)
  • OpenHarmony 页面路由与跨页面数据传递全解实战
  • ArcMap老鸟的避坑实录:表格转矢量时‘Z值错误’和坐标对调怎么破?
  • Hive进阶:用struct和named_struct优雅处理嵌套JSON数据,5分钟搞定复杂字段解析
  • 2026谷歌GEO公司产品推荐,鲸占GEO怎么样?
  • 2026最新诚信优选厦门市个人与企业黄金铂金白银彩金回收正规靠谱门店TOP排行榜和门店联系方式推荐 - 余生黄金回收
  • 2026三亚靠谱黄金铂金彩金白银回收门店精选榜单|全城上门商家联系方式汇总 - 余生黄金回收
  • 3大核心功能:NS-USBLoader一站式解决Switch游戏管理与系统注入难题
  • Photoshop CC 2025新手入门教程
  • 避坑指南:STM32F103驱动TLC5615 DAC时,时序不对怎么办?实测调试心得分享
  • Switch手柄电脑适配终极指南:用BetterJoy实现完美游戏体验
  • 大模型推理栈中安全与格式化层的归零革命
  • 零框架PHP学生成绩系统:学生查分+教师录分+完整SQL脚本+操作视频
  • 医疗生成式AI的隐私保护分层防御架构
  • 终极AMD Ryzen调试工具:5分钟掌握硬件调优秘籍
  • 2026 放热焊接模具优质厂家哪家好:五大实力厂商横向测评优选指南
  • 基于51单片机的豆浆机智能控制仿真工程(Proteus电路+Keil源码)
  • Windows任务栏透明美化终极方案:TranslucentTB完全解析
  • 从‘共轭对称’到实信号:用Matlab IFFT生成OFDM时域波形的保姆级指南
  • 佛山禅城区黄金回收行情:当前金价944元,回收价这样算才不亏 - 黄金上门回收
  • 飞牛 NAS 用 Docker 搭 Navidrome:把本地音乐库变成随时能听的私有歌单
  • Elsevier投稿避坑:你的cas-dc模板作者信息和参考文献排序搞对了吗?
  • MQTTBox vs MQTT.fx:手把手教你选对物联网调试工具(含WebSocket、负载测试对比)
  • V-JEPA在面部表情识别中的创新应用与性能突破
  • WinForm日历控件源码包:支持考勤状态着色、时间段高亮与多视图切换
  • 2025国际数据人才生存指南:LLM工程化与签证策略实战
  • Blueking Lite更新:新增多类功能,满足运维管理多样需求