我的代码:
#include <iostream> #include <vector> using namespace std; int main() { string str; cin >> str; int dxy[][2] = { {0,1},{1,0},{0,-1},{-1,0} }; //设置偏移量,按照右转顺序:北->东->南->西 int now = 0; //设置朝向,默认0为北 int x = 0, y = 0; //初始坐标,按照x,y坐标轴 for (int i = 0; i < str.size(); i++) //遍历字符串 { switch (str[i]) { case 'G': //如果是前进指令,则坐标加上对应的偏移量 x += dxy[now % 4][0]; //%4是为了让now取值保持在1~3中 y += dxy[now % 4][1]; break; case 'R': //若果是右转指令,则让朝向加1,因为偏移量数组就是按照右转顺序来的 now++; break; case 'L': //如果是左转指令,则让朝向加3 now += 3; break; } } if (x == 0 && y == 0) cout << "true" << endl; else if (now%4 != 0) cout << "true" << endl; //如果最后朝向不是北,则经过若干循环一定会回到原点 else cout << "false" << endl; return 0; }
F - 创新型机器猫 & 高性能战斗机器人(遇到过的题,做个笔记)
最新推荐文章于 2024-07-25 21:13:04 发布