ปัญหา
เริ่มที่ (0,0) ได้รับสตริงทิศทาง E(ตะวันออก), W(ตะวันตก), N(เหนือ), S(ใต้) ตรวจสอบว่ากลับมาที่ (0,0) ได้หรือไม่
ตัวอย่าง
"EENWWS" → True (E+E=N+W+W+S = กลับมาจุดเดิม)
อัลกอริธึม
นับ Net Displacement: x = count(E) - count(W), y = count(N) - count(S) ถ้าทั้งคู่เป็น 0 → กลับมาจุดเริ่มต้น
โปรแกรมตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
bool canReturn(string moves) {
int x = 0, y = 0;
for (char c : moves) {
if (c == 'E') x++;
else if (c == 'W') x--;
else if (c == 'N') y++;
else if (c == 'S') y--;
}
return (x == 0 && y == 0);
}
int main() {
cout << canReturn("EENWWS"); // 1 (true)
return 0;
}