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;
    }
  • 相关阅读:
    Java第二次作业
    JAVA学习计划
    学生选课系统
    抽奖
    Java第二次作业
    Java第六次作业修改版
    Java第六次作业
    JAVA第五次作业
    Java第四次作业
    JAVA第三次作业
  • 原文地址:https://www.cnblogs.com/rainydays/p/2137468.html
Copyright © 2011-2022 走看看