当前位置: 首页 > 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.rkmt.cn/news/1472639.html

相关文章:

  • 呼和浩特2026靠谱贵金属回收排行榜|黄金铂金彩金白银回收门店地址电话一览 - 余生黄金回收
  • OpenHarmony 页面路由与跨页面数据传递全解实战
  • 避坑指南:STM32F103驱动TLC5615 DAC时,时序不对怎么办?实测调试心得分享
  • 2026谷歌GEO公司产品推荐,鲸占GEO怎么样?
  • Switch手柄电脑适配终极指南:用BetterJoy实现完美游戏体验
  • 2026三亚靠谱黄金铂金彩金白银回收门店精选榜单|全城上门商家联系方式汇总 - 余生黄金回收
  • 大模型推理栈中安全与格式化层的归零革命
  • 医疗生成式AI的隐私保护分层防御架构
  • 2026 放热焊接模具优质厂家哪家好:五大实力厂商横向测评优选指南
  • Elsevier投稿避坑:你的cas-dc模板作者信息和参考文献排序搞对了吗?
  • 基于51单片机的豆浆机智能控制仿真工程(Proteus电路+Keil源码)
  • MQTTBox vs MQTT.fx:手把手教你选对物联网调试工具(含WebSocket、负载测试对比)
  • WinForm日历控件源码包:支持考勤状态着色、时间段高亮与多视图切换
  • 2025国际数据人才生存指南:LLM工程化与签证策略实战
  • 承德 11 区县全套文案(全区统一固定标题:2026 上海防水补漏 + 瓷砖空鼓修复推荐,苏易修缮本土直营,老城老房漏水、瓷砖翘边拱起就近微创修) - 苏易修缮
  • E-Hentai下载器:无需积分的画廊打包下载神器
  • 从“单词计数”到实战:手把手教你用Java写一个MapReduce程序处理日志文件
  • WinForms点云显示控件:基于SharpGL的即用型C#三维渲染组件
  • 2026报考必看:文山学院优质专业盘点,解锁适配就业新方向 - 品牌2026
  • NS-USBLoader 终极指南:一站式解决Switch游戏传输、RCM注入与文件管理三大难题
  • ZYNQ开发避坑指南:手把手教你用ILA和SDK进行软硬件联合调试(附AXI触发条件详解)
  • 微信小程序云开发版月度步数统计工具(含图表展示与数据汇总)
  • 给IC新人的第一课:手把手带你玩转ICC GUI,从打开设计到图层控制(附Lab0A避坑指南)
  • 2026年6月 最新的烟台职教高考学校、春季高考培训基地排行:合规与实力的客观对比 - 奔跑123
  • PG 管控系统技术方案
  • 密码杂凑算法七大神剑之天瀑剑TPS设计原理详解
  • Infoway 日本股票实时行情接口新手接入指南
  • 湛江黄金回收品牌合集六家靠谱门店详细盘点 - 余生黄金回收
  • 别再手动下载了!教你用GeoServer+OSM数据快速搭建自己的离线地图服务(Windows环境)
  • Windows一键处理Word文档:PDF转换+页码提取+目录生成(带源码和免安装exe)