我的代码:
#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': //如果是左转指令,则让朝向加3now += 3;break;}}if (x == 0 && y == 0) cout << "true" << endl;else if (now%4 != 0) cout << "true" << endl; //如果最后朝向不是北,则经过若干循环一定会回到原点else cout << "false" << endl;return 0;
}
参考(来自学长们题解):