zoukankan      html  css  js  c++  java
  • poj1835

    向量运算

    简单题

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    using namespace std;

    struct Point
    {
    int x, y, z;
    } pos, head, dir;

    int n;

    void up()
    {
    dir.x
    = -dir.x;
    dir.y
    = -dir.y;
    dir.z
    = -dir.z;
    swap(dir, head);
    }

    void down()
    {
    head.x
    = -head.x;
    head.y
    = -head.y;
    head.z
    = -head.z;
    swap(dir, head);
    }

    void back()
    {
    dir.x
    = -dir.x;
    dir.y
    = -dir.y;
    dir.z
    = -dir.z;
    }

    void left()
    {
    Point p;
    p.x
    = head.y * dir.z - dir.y * head.z;
    p.y
    = head.z * dir.x - dir.z * head.x;
    p.z
    = head.x * dir.y - dir.x * head.y;
    dir
    = p;
    }

    void right()
    {
    Point p;
    p.x
    = head.z * dir.y - dir.z * head.y;
    p.y
    = head.x * dir.z - dir.x * head.z;
    p.z
    = head.y * dir.x - dir.y * head.x;
    dir
    = p;
    }


    int main()
    {
    //freopen("t.txt", "r", stdin);
    int t;
    scanf(
    "%d", &t);
    while (t--)
    {
    scanf(
    "%d", &n);
    pos.x
    = pos.y = pos.z = 0;
    head.z
    = 1;
    head.x
    = head.y = 0;
    dir.x
    = 1;
    dir.y
    = dir.z = 0;
    for (int i = 0; i < n; i++)
    {
    char st[10];
    scanf(
    "%s", st);
    int d;
    scanf(
    "%d", &d);
    if (strcmp(st, "back") == 0)
    back();
    else if (strcmp(st, "left") == 0)
    left();
    else if (strcmp(st, "right") == 0)
    right();
    else if (strcmp(st, "up") == 0)
    up();
    else if (strcmp(st, "down") == 0)
    down();
    pos.x
    += dir.x * d;
    pos.y
    += dir.y * d;
    pos.z
    += dir.z * d;
    }
    int ans;
    if (dir.x == 1)
    ans
    = 0;
    else if (dir.y == 1)
    ans
    = 4;
    else if (dir.z == 1)
    ans
    = 2;
    else if (dir.x == -1)
    ans
    = 3;
    else if (dir.y == -1)
    ans
    = 1;
    else if (dir.z == -1)
    ans
    = 5;
    printf(
    "%d %d %d %d\n", pos.x, -pos.y, pos.z, ans);
    }
    return 0;
    }
  • 相关阅读:
    GNOME on Arch Linux
    忽然想通不喜欢搞前端的原因
    可以一时气馁,不能放弃
    Hack语言类型化简介
    标榜
    Hack其实是一门好语言
    Focus
    PHP旧系统基于命名空间重构经验
    少即是多的设计
    IDDD 实现领域驱动设计-一个简单的 CQRS 示例
  • 原文地址:https://www.cnblogs.com/rainydays/p/2137468.html
Copyright © 2011-2022 走看看