码迷,mamicode.com
首页 > 其他好文 > 详细

POJ1835 宇航员 模拟

时间:2020-01-28 09:30:00      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:getch   getc   相对   std   ==   scan   dir   name   return   

一道模拟题:http://poj.org/problem?id=1835

直接将宇航员当前方向、相对头顶方向、相对左边方向写出来即可。

代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
    char s[10];
    int t, step;
    scanf("%d", &t);
    while(t--) {
        int point[6] = {0, 0, 0, 0, 0, 0};
        int dir = 0, head = 2, left = 4, n;
        scanf("%d", &n);
        getchar();
        while(n--) {
            scanf("%s%d", s, &step);
            if(s[0] == ‘f‘) {
                point[dir] += step;
            }
            else if(s[0] == ‘b‘) {
                left = (left + 3) % 6;
                dir = (dir + 3) % 6;
                point[dir] += step;
            }
            else if(s[0] == ‘l‘) {
                int t = dir;
                dir = left;
                left = (t + 3) % 6;
                point[dir] += step;
            }
            else if(s[0] == ‘r‘) {
                int t = dir;
                dir = (left + 3) % 6;
                left = t;
                point[dir] += step;
            }
            else if(s[0] == ‘u‘) {
                int t  = dir;
                dir = head;
                head = (t + 3) % 6;
                point[dir] += step;
            }
            else if(s[0] == ‘d‘){
                int t = dir;
                dir = (head + 3) % 6;
                head = t;
                point[dir] += step;
            }
        }
        printf("%d %d %d %d\n", point[0] - point[3], point[1] - point[4], point[2] - point[5], dir);
    }
    return 0;
}

 

POJ1835 宇航员 模拟

标签:getch   getc   相对   std   ==   scan   dir   name   return   

原文地址:https://www.cnblogs.com/xdaniel/p/12237307.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!