zoukankan      html  css  js  c++  java
  • Programming a robot

    题目链接:Gym - 101492H 

    自己的纯暴力做法:

      1 /* */
      2 # include <iostream>
      3 # include <cstdio>
      4 # include <cstring>
      5 # include <string>
      6 # include <cstdlib>
      7 # include <cmath>
      8 # include <ctime>
      9 # include <climits>
     10 # include <memory>
     11 # include <functional>
     12 # include <algorithm>
     13 # include <bitset>
     14 # include <set>
     15 # include <map>
     16 # include <stack>
     17 # include <vector>
     18 # include <deque>
     19 # include <queue>
     20 # include <iomanip>
     21 # include <utility>
     22 using namespace std;
     23 
     24 # define lson l,m,rt<<1
     25 # define rson r,m+1,rt<<1|1
     26 # define lowbit(x) (x&(-x))
     27 # define lcm(a,b) (a*b/__gcd(a,b))
     28 typedef long long ll;
     29 const ll mod=1e9+7;
     30 const int maxn=15;
     31 const double pi=acos(-1.0);
     32 const int eps=1e-8;
     33 
     34 int main()
     35 {
     36     char c;
     37     ll x0, y0, xd, yd;
     38     int flag1=-1, flag2=-1;
     39     scanf("%lld %lld %c", &x0, &y0, &c);
     40     scanf("%lld %lld", &xd, &yd);
     41 
     42     ll x=xd-x0;
     43     ll y=yd-y0;
     44     if( x==0 && y==0 )//在原位
     45     {
     46         printf("0
    ");
     47     }
     48 
     49     else if( x==0 && y>0 )//在上方
     50     {
     51         if( c=='N' )
     52         {
     53             //printf("%lld
    ", y);
     54             printf("1
    ");
     55             printf("A %lld
    ", y);
     56         }
     57         else if( c=='E' )
     58         {
     59             printf("%d
    ", 3+1);
     60             for(int i=0; i<3; i++ )
     61             {
     62                 printf("D
    ");
     63             }
     64             printf("A %lld
    ", y);
     65         }
     66 
     67         else if( c=='S' )
     68         {
     69             printf("%d
    ", 2+1);
     70             for(int i=0; i<2; i++ )
     71             {
     72                 printf("D
    ");
     73             }
     74             printf("A %lld
    ", y);
     75         }
     76 
     77         else if( c=='O')
     78         {
     79             printf("%d
    ", 1+1);
     80             printf("D
    ");
     81             printf("A %lld
    ", y);
     82         }
     83     }
     84 
     85     else if( x==0 && y<0 )//在下方
     86     {
     87         y = -y;
     88         if( c=='S')
     89         {
     90             printf("1
    ");
     91             printf("A %lld
    ", y);
     92         }
     93 
     94         else if( c=='E' )
     95         {
     96             printf("%d
    ", 1+1);
     97             printf("D
    ");
     98             printf("A %lld
    ", y);
     99         }
    100 
    101         else if( c=='N' )
    102         {
    103             printf("%d
    ", 2+1);
    104             for(int i=0; i<2; i++ )
    105             {
    106                 printf("D
    ");
    107             }
    108             printf("A %lld
    ", y);
    109         }
    110 
    111         else if( c=='O' )
    112         {
    113             printf("%d
    ", 3+1);
    114             for(int i=0; i<3; i++ )
    115             {
    116                 printf("D
    ");
    117             }
    118             printf("A %lld
    ", y);
    119         }
    120     }
    121 
    122     else if( x>0 && y==0 )//在右边
    123     {
    124         if( c=='E' )
    125         {
    126             printf("1
    ");
    127             printf("A %lld
    ", x);
    128         }
    129 
    130         else if( c=='S' )
    131         {
    132             printf("%d
    ", 3+1);
    133             for(int i=0; i<3; i++ )
    134             {
    135                 printf("D
    ");
    136             }
    137             printf("A %lld
    ", x);
    138         }
    139 
    140         else if( c=='O' )
    141         {
    142             printf("%d
    ", 2+1);
    143             for(int i=0; i<2; i++ )
    144             {
    145                 printf("D
    ");
    146             }
    147             printf("A %lld
    ", x);
    148         }
    149 
    150         else if( c=='N' )
    151         {
    152             printf("%d
    ", 1+1);
    153             printf("D
    ");
    154             printf("A %lld
    ", x);
    155         }
    156     }
    157 
    158     else if(x<0 && y==0 )//在左边
    159     {
    160         x=-x;
    161         if( c=='O' )
    162         {
    163             printf("1
    ");
    164             printf("A %lld
    ", x);
    165         }
    166 
    167         else if( c=='N' )
    168         {
    169             printf("%d
    ", 3+1);
    170             for(int i=0; i<3; i++ )
    171             {
    172                 printf("D
    ");
    173             }
    174             printf("A %lld
    ", x);
    175         }
    176 
    177         else if( c=='E' )
    178         {
    179             printf("%d
    ", 2+1);
    180             for(int i=0; i<2; i++ )
    181             {
    182                 printf("D
    ");
    183             }
    184             printf("A %lld
    ", x);
    185         }
    186 
    187         else if( c=='S' )
    188         {
    189             printf("%d
    ", 1+1);
    190             printf("D
    ");
    191             printf("A %lld
    ", x);
    192         }
    193     }
    194 
    195     else if( x>0 && y>0 )//在右上方
    196     {
    197         if( c=='N' )
    198         {
    199             printf("%d
    ", 1+1+1);
    200             printf("A %lld
    ", y);
    201             printf("D
    ");
    202             printf("A %lld
    ", x);
    203         }
    204 
    205         else if( c=='E' )
    206         {
    207             printf("%d
    ", 3+1+1);
    208             printf("A %lld
    ", x);
    209             for(int i=0; i<3; i++ )
    210             {
    211                 printf("D
    ");
    212             }
    213             printf("A %lld
    ", y);
    214         }
    215 
    216         else if( c=='S' )
    217         {
    218             printf("%d
    ", 2+1+1+1);
    219             printf("D
    ");
    220             printf("D
    ");
    221             printf("A %lld
    ", y);
    222             printf("D
    ");
    223             printf("A %lld
    ", x);
    224         }
    225 
    226         else if( c=='O')
    227         {
    228             printf("%d
    ", 1+1+1+1);
    229             printf("D
    ");
    230             printf("A %lld
    ", y);
    231             printf("D
    ");
    232             printf("A %lld
    ", x);
    233         }
    234     }
    235 
    236     else if( x>0 && y<0 )//在右下
    237     {
    238         y=-y;
    239         if( c=='S' )
    240         {
    241             printf("%d
    ", 1+3+1);
    242             printf("A %lld
    ", y);
    243             for(int i=0; i<3; i++ )
    244             {
    245                 printf("D
    ");
    246             }
    247             printf("A %lld
    ", x);
    248         }
    249 
    250         if( c=='O')
    251         {
    252             printf("%d
    ", 2+1+1+1);
    253             printf("D
    D
    ");
    254             printf("A %lld
    ", x);
    255             printf("D
    ");
    256             printf("A %lld
    ", y);
    257         }
    258 
    259         if( c=='N' )
    260         {
    261             printf("%d
    ", 1+1+1+1);
    262             printf("D
    ");
    263             printf("A %lld
    ", x);
    264             printf("D
    ");
    265             printf("A %lld
    ", y);
    266         }
    267 
    268         if( c=='E' )
    269         {
    270             printf("%d
    ", 1+1+1);
    271             printf("A %lld
    ", x);
    272             printf("D
    ");
    273             printf("A %lld
    ", y);
    274         }
    275     }
    276 
    277     else if( x<0 && y<0 )
    278     {
    279         x = -x;
    280         y = -y;
    281         if( c=='S' )
    282         {
    283             printf("%d
    ", 1+1+1);
    284             printf("A %lld
    ", y);
    285             printf("D
    ");
    286             printf("A %lld
    ", x);
    287         }
    288 
    289         if( c=='O' )
    290         {
    291             printf("%d
    ", 1+3+1);
    292             printf("A %lld
    ", x);
    293             printf("D
    D
    D
    ");
    294             printf("A %lld
    ", y);
    295         }
    296 
    297         if( c=='N' )
    298         {
    299             printf("%d
    ", 2+1+1+1);
    300             printf("D
    D
    ");
    301             printf("A %lld
    ", y);
    302             printf("D
    ");
    303             printf("A %lld
    ", x);
    304         }
    305 
    306         if( c=='E' )
    307         {
    308             printf("%d
    ", 1+1+1+1);
    309             printf("D
    ");
    310             printf("A %lld
    ", y);
    311             printf("D
    ");
    312             printf("A %lld
    ", x);
    313         }
    314     }
    315 
    316     else if( x<0 && y>0 )//在左上
    317     {
    318         x=-x;
    319         if( c=='N' )
    320         {
    321             printf("%d
    ", 1+3+1);
    322             printf("A %lld
    ", y);
    323             printf("D
    D
    D
    ");
    324             printf("A %lld
    ", x);
    325         }
    326 
    327         if( c=='E' )
    328         {
    329             printf("%d
    ", 2+1+1+1);
    330             printf("D
    D
    ");
    331             printf("A %lld
    ", x);
    332             printf("D
    ");
    333             printf("A %lld
    ", y);
    334         }
    335 
    336         if( c=='S' )
    337         {
    338             printf("%d
    ", 1+1+1+1);
    339             printf("D
    ");
    340             printf("A %lld
    ", x);
    341             printf("D
    ");
    342             printf("A %lld
    ", y);
    343         }
    344 
    345         if( c=='O' )
    346         {
    347             printf("%d
    ", 1+1+1);
    348             printf("A %lld
    ", x);
    349             printf("D
    ");
    350             printf("A %lld
    ", y);
    351         }
    352     }
    353     return 0;
    354 }
    View Code

    后来看别人的代码才知道“模拟”

      1 /* */
      2 # include <iostream>
      3 # include <cstdio>
      4 # include <cstring>
      5 # include <string>
      6 # include <cstdlib>
      7 # include <cmath>
      8 # include <ctime>
      9 # include <climits>
     10 # include <memory>
     11 # include <functional>
     12 # include <algorithm>
     13 # include <bitset>
     14 # include <set>
     15 # include <map>
     16 # include <stack>
     17 # include <vector>
     18 # include <deque>
     19 # include <queue>
     20 # include <iomanip>
     21 # include <utility>
     22 using namespace std;
     23 
     24 # define lson l,m,rt<<1
     25 # define rson r,m+1,rt<<1|1
     26 # define lowbit(x) (x&(-x))
     27 # define lcm(a,b) (a*b/__gcd(a,b))
     28 typedef long long ll;
     29 const ll mod=1e9+7;
     30 const int maxn=15;
     31 const double pi=acos(-1.0);
     32 const int eps=1e-8;
     33 
     34 char s[]={'N', 'E', 'S', 'O', 'N', 'E', 'S'};
     35 
     36 int _find(char c, int k)
     37 {
     38     for(int i=0; s[i]!=''; i++ )
     39         if( s[i]==c && i>=k )
     40         return i;
     41 }
     42 
     43 int main()
     44 {
     45     int a, b, x, y;
     46     char m, n, c;
     47     while( cin>>x>>y>>c>>a>>b )
     48     {
     49         int k1=_find(c, 0), k2, k3;
     50 
     51         if( a==x )
     52             k2=0;
     53         if( b==y )
     54             k3=0;
     55 
     56         if( a!=x && b!=y )
     57         {
     58             if( a>x )//
     59             {
     60                 m='E';
     61                 if( b>y )//
     62                     n='N';
     63                 else if( b<y )//
     64                     n='S';
     65             }
     66             else if( a<x )//
     67             {
     68                 m='O';
     69                 if( b>y )//
     70                     n='N';
     71                 else if( b<y )//
     72                     n='S';
     73             }
     74 
     75             k2 = _find(n, k1)-k1;
     76             k3 = _find(m, k1)-k1;
     77             cout<<max(k2, k3)+2<<endl;//max(k2,k3)是求一定要转够的书,2是两次直走步骤
     78             int px=fabs(x-a);
     79             int py=fabs(y-b);
     80 
     81             if( k2>k3 )
     82             {
     83                 for(int i=0; i<k3; i++ )
     84                 {
     85                     cout<<"D"<<endl;//转到要转的方向才可以走
     86                 }
     87                 cout<<"A "<<px<<endl;
     88                 for(int i=k3; i<k2; i++ )
     89                     cout<<"D"<<endl;
     90                 cout<<"A "<<py<<endl;
     91             }
     92 
     93             else
     94             {
     95                 for(int i=0; i<k2; i++ )
     96                     cout<<"D"<<endl;
     97                 cout<<"A "<<py<<endl;
     98                 for(int i=k2; i<k3; i++ )
     99                     cout<<"D"<<endl;
    100                 cout<<"A "<<px<<endl;
    101             }
    102         }
    103 
    104         else
    105         {
    106             if( x==a&&y==b )
    107                 cout<<0<<endl;
    108 
    109             else if( x==a )
    110             {
    111                 if( b>y )//正上方
    112                     n='N';
    113                 else//正下方
    114                     n='S';
    115 
    116                 k2=_find(n, k1)-k1;
    117                 cout<<k2+1<<endl;
    118                 for(int i=0; i<k2; i++ )
    119                     cout<<"D"<<endl;
    120                 cout<<"A "<<fabs(b-y)<<endl;
    121             }
    122             else if( y==b )
    123             {
    124                 if( a>x )
    125                     m='E';
    126                 else
    127                     m='O';
    128                 k3=_find(m,k1)-k1;
    129                 cout<<k3+1<<endl;
    130                 for(int i=0; i<k3; i++ )
    131                     cout<<"D"<<endl;
    132                 cout<<"A "<<fabs(a-x)<<endl;
    133             }
    134         }
    135     }
    136     return 0;
    137 }
  • 相关阅读:
    050医疗项目-模块五:权限设置-第三方系统的接入
    049医疗项目-模块五:权限设置
    047医疗项目-模块四:采购单模块—采购单审核提交(Dao,Service,Action三层)
    046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)
    Netty原理分析
    Java集群优化——使用Dubbo对单一应用服务化改造
    知乎问答:现在程序员的工资是不是被高估了?
    一文理解 Java NIO 核心组件
    深入理解 Spring 事务原理
    完美主义对程序员的影响
  • 原文地址:https://www.cnblogs.com/wsy107316/p/11390761.html
Copyright © 2011-2022 走看看