題目大意:
給你一個字符串,裡面有許多的操作,前面的數字是移動的距離,後面的英文表示移動的方向,問最後從遠點出發的一個點回落在什麼地方以及距離出發點的距離是多少。
解題思路:
題目本身並不是很難,也沒有什麼坑點,沒什麼好說的,字符串處理的時候細心一點就行。
PS:每組後面需要加一個回車,因為這個PE了一次啊啊啊啊!
代碼:
#include#include #include #include #include using namespace std; const double t = sqrt(2.0); int main() { string s; int icase = 1; while(cin >> s) { if(s == END) { break; } int num = 0; double x = 0, y = 0; for(int i = 0; i < (int)s.length()-1; ++i) { if(s[i] >= '0' && s[i] <= '9') { num = num*10+(s[i]-'0'); } else if(s[i] == ','){ num = 0; continue; } else if(s[i] == 'N' && s[i+1] == 'E') { x+=num/t, y+=num/t, i++; } else if(s[i] == 'N' && s[i+1] == 'W') { x-=num/t, y+=num/t, i++; } else if(s[i] == 'S' && s[i+1] == 'E') { x+=num/t, y-=num/t, i++; } else if(s[i] == 'S' && s[i+1] == 'W') { x-=num/t, y-=num/t, i++; } else if(s[i] == 'N') { y+=num; } else if(s[i] == 'S') { y-=num; } else if(s[i] == 'E') { x+=num; } else if(s[i] == 'W') { x-=num; } //printf(%lf %lf , x, y); } printf(Map #%d , icase++); printf(The treasure is located at (%.3lf,%.3lf). , x, y); printf(The distance to the treasure is %.3lf. , sqrt(x*x+y*y)); } return 0; }