题目:找试场

题目描述

小王同学在坐标系的(0,0)处,但是他找不到考试的试场,于是一边走路一边问路,每个被问路的人会告诉他一个指令(包括走路或转弯),现在请编一个程序,显示他每次走路后的坐标(转弯后不必显示坐标)。

数据范围
对于50 %的数据,0<n <=20,对于100 %的数据,0<n <=500, 所有数据都在longint范围内。

输入格式

第一行一个数n,表示有n个指令,接下来n行每行一个指令,每个指令是“left” 或“right”或数字。

输出格式

(有m个走路的指令)共m行,每一行一个坐标,表示走完后的坐标。如果只是原地转弯,从来不走动,则输出“(0,0)”.

 

 

 

题解:———————————————————————————————————————————————————

第一次做这样的题,看了别人的题解才明白,设定一个指示方向的变量,但向左转时step+3,向右转时step+1,向右转三次相当于向左转一次。

 

代码实现:

#include<iostream>
using namespace std;

int main()
{
   int x,y,i,n;int b[501][2];

   cin>>n;
   
   x=y=0;
   memset(b,-1,sizeof(b));
   
   int step=0; 
   for(i=1;i<=n;i++)
   {
    char a[30];
    cin>>a;
    
    if(0<=a[0]-'0'&&a[0]-'0'<=9)    
     {  
      int k,j=0,l=1;   
      k=strlen(a);
      while(k>0)
      {
       j=j+(a[k-1]-'0')*l;
       l=l*10;
       k--;
                 }       
      switch(step){
                   case 0:y=y+j;break;
                   case 1:x=x+j;break;
                   case 2:y=y-j;break;
                   case 3:x=x-j;break;
                   }              
      b[i][0]=x;b[i][1]=y;             
      }                                           
    else if(a[0]=='r') {step=step+1;step=step%4;}
    else if(a[0]=='l') {step=step+3;step=step%4;}
                    }
    bool p=0;
    
    for(i=1;i<=n;i++)
    if((b[i][0]!=0||b[i][1]!=0)&&b[i][0]!=-1)
    p=1;
    
    if(p==0) {cout<<"(0,0)"<<endl;return 0;}
    
    for(i=1;i<=n;i++)
    if(b[i][0]!=-1)
    cout<<"("<<b[i][0]<<","<<b[i][1]<<")"<<endl;
     
    return 0;
    
    }
posted on   怡红公子  阅读(499)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
< 2011年12月 >
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7

点击右上角即可分享
微信分享提示