上海计算机学会2022年2月月赛C++丙组T3海龟作图
 发布时间 
 阅读量: 
 阅读量 
题目描述
二维平面上有一只海龟,一开始,海龟面向X轴正方向,位于坐标原点 (0,0)。接下来,海龟接受一连串命令,每个命令可以用一个大写字母表示:
R表示海龟沿顺时针旋转90度;L表示海龟沿逆时针旋转90度;F表示海龟沿当前方向前进一个单元;B表示海龟沿当前方向后退一个单元。
请求出结束时,海龟的位置坐标。
输入格式
- 单个字符串:表示海龟的移动指令
 
输出格式
- 两个整数:表示海龟的坐标
 
数据范围
- 字符数量不超过 100000
 
样例数据
输入:
FFF
输出:
3 0
说明:
(0,0)->(1,0)->(2,0)->(3,0)
输入:
LFF
输出:
0 2
说明:
(0,0)->(0,0)->(0,1)->(0,2)
输入:
FBLR
输出:
0 0
解析
本题关键点:读入字符串,根据RL的旋转角度,判断是x或y是++还是--,代码如下。
 #include <iostream>
    
 #include <string>
    
 using namespace std;
    
 int main() {
    
 	int x, y,z;
    
 	x=0;
    
 	y=0;
    
 	z = 90;	
    
 	string s;
    
 	cin>>s;
    
 	for(int i = 0; i < s.size(); i++) {		
    
 		if(s[i] == 'R') {
    
 			z = (z + 450) % 360;			
    
 		} else if(s[i] == 'L') {
    
 			z = (z + 270) % 360;
    
 		} else if(s[i] == 'F') {
    
 			if(z == 0) {
    
 				y++;
    
 			} else if(z == 180) {
    
 				y--;
    
 			} else if(z == 90) {
    
 				x++;
    
 			} else {
    
 				x--;
    
 			} 
    
 		} else {
    
 			if(z == 0) {
    
 				y--;
    
 			} else if(z == 180) {
    
 				y++;
    
 			} else if(z == 90) {
    
 				x--;
    
 			} else {
    
 				x++;
    
 			} 
    
 		}
    
 	} 
    
 	cout<<x<<" "<<y<<endl; 
    
 	return 0;
    
 }
    
    
    
    
        全部评论 (0)
 还没有任何评论哟~ 
