zoukankan      html  css  js  c++  java
  • HDU

    题目链接

    http://acm.hdu.edu.cn/showproblem.php?pid=1033

    题意

    给定一个起始点 300 420
    走的第一步是 310 420

    下面的每一步 都由 输入决定

    如果输入 V 那么就往左边走10个单位长度

    比如 样例一 给的V 走到上面了
    因为它本来的方向是 右边 那么 对于它的左边 其实就是上边

    如果输入A 就往右边走10个单位长度

    思路
    可以定义方向

    up 0 right 1 down 2 left 3

    然后 给定V 就是 dis– 给A 就是 dis++

    但是要注意 如果dis <0 dis 应该为3
    dis 如果>=4 应该 模3

    AC代码

    #include <cstdio>
    #include <cstring>
    #include <ctype.h>
    #include <cstdlib>
    #include <cmath>
    #include <climits>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <deque>
    #include <vector>
    #include <queue>
    #include <string>
    #include <map>
    #include <stack>
    #include <set>
    #include <list>
    #include <numeric> 
    #include <sstream>
    #include <iomanip>
    #include <limits>
    
    #define CLR(a, b) memset(a, (b), sizeof(a))
    #define pb push_back
    
    using namespace std;
    typedef long long ll;
    typedef long double ld;
    typedef unsigned long long ull;
    typedef pair <int, int> pii;
    typedef pair <ll, ll> pll;
    typedef pair<string, int> psi;
    typedef pair<string, string> pss;
    
    const double PI = acos(-1.0);
    const double E = exp(1.0);
    const double eps = 1e-8;
    
    const int INF = 0x3f3f3f3f;
    const int maxn = 1e6 + 5;
    const int MOD = 1e9 + 7;
    
    int Move[4][2]
    {
          0, 10, // up
         10,  0, // right
          0,-10, // down
        -10,  0, // left
    };
    
    int main()
    {
        string s;
        while (cin >> s)
        {
            int len = s.size();
            printf("300 420 moveto
    ");
            printf("310 420 lineto
    ");
            // up 0 right 1 down 2 left 3
            int x = 310, y = 420, dir = 1;
            for (int i = 0; i < len; i++)
            {
                if (s[i] == 'V')
                    dir--;
                else
                    dir++;
                if (dir < 0)
                    dir = 3;
                dir %= 4;
                x += Move[dir][0];
                y += Move[dir][1];
                printf("%d %d lineto
    ", x, y);
            }
            printf("stroke
    ");
            printf("showpage
    ");
        }
    }
  • 相关阅读:
    软件工程 实验二 结对编程(第一阶段)
    C#中的线程(一)入门
    C# Using与Try..Finally 语句探究
    中兴一面归来
    Log4Net 入门示例
    C++ 临时对象
    C宏定义探析
    MFC 对话框 快捷键设置(alt+s)
    C#中的线程(二) 线程同步基础
    Ip地址的正则表达式
  • 原文地址:https://www.cnblogs.com/Dup4/p/9433101.html
Copyright © 2011-2022 走看看