转圈方向

描述

一个动点开始位于坐标原点处,接下来它将按照预先定义好的路径运动,最终会回到原点位置。定义好的路径以一串字符串表示,其中N表示向上移动,S表示向下移动,E表示向右移动,W表示向左移动。每次移动距离均是1个单位长度。

当运动结束回到原点时请你判断这次运动是顺时针方向还是逆时针方向。

注意:数据保证最终回到原点,并且除了原点外其他任何走过的点不会被再次走到。

错误思路

判断第一次的方向,向左就cout<<0,右就cout<<1
向上或向下就找第一个左右来判断
这样明显有问题
比如image

正确思路

这题其实很水,只需判断左拐次数和右拐次数哪个大就行了
左大就是1,右大就是0

AC CODE

#include<bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
string s;
cin >> s;
int l = 0, r = 0;
for (int i = 0; i < s.size() - 1; i++) {
if (s[i] == 'N' && s[i + 1] == 'W') {
l++;
}
if (s[i] == 'S' && s[i + 1] == 'E') {
l++;
}
if (s[i] == 'W' && s[i + 1] == 'S') {
l++;
}
if (s[i] == 'E' && s[i + 1] == 'N') {
l++;
}
if (s[i] == 'N' && s[i + 1] == 'E') {
r++;
}
if (s[i] == 'S' && s[i + 1] == 'W') {
r++;
}
if (s[i] == 'W' && s[i + 1] == 'N') {
r++;
}
if (s[i] == 'E' && s[i + 1] == 'S') {
r++;
}
}
if (l > r) {
cout << 1 << endl;
} else {
cout << 0 << endl;
}
}
return 0;
}

进程已结束,退出代码0

posted on   可爱楷玩算法  阅读(13)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示