Advertisement

上海计算机学会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)

还没有任何评论哟~