标签:image alt mamicode 小孩 cst scanf 包括 math algo
拖延症又犯了QwQ。
今天上午考试了,按照惯例,我仍然要把我会的所有题的题解写一遍。
1.找试场(way.cpp/in/out) 问题描述 小王同学在坐标系的(0,0)处,但是他找不到考试的试场,于是一边走路一边问路, 每个被问路的人会告诉他一个指令(包括走路或转弯),现在请编一个程序,显示他每次走 路后的坐标(转弯后坐标不变,所以不必显示坐标)。 初始方向向 y 轴正半轴!! 输入格式 第一行一个数 n,表示有 n 个指令,接下来 n 行每行一个指令,每个指令是“left” 或 “right”或数字。 输出格式 (有 m 个走路的指令)共 m 行,每一行一个坐标,表示走完后的坐标。如果只是原地转 弯,从开始到最后从来不走动,则输出“(0,0)”。
这是第一题,看起来还不错,打表很香的样子,但我是一个学识浅薄的小孩,我根本不知道y轴正半轴是什么意思
不慌,不慌,我们来看看样例。
样例输入 6 2 left 2 right right 3 样例输出 (0,2) (-2,2) (1,2)
样例告诉了我们一些有用的东西啊!首先,不转动的时候向前移动,是y增加。面向左向前移动,是x减少。面向右向前移动是x增加。知道了3个最后一个也很简单,是y减少。这样就可以美妙的打表了。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
long long n;
long long fx,x,y,shu,bj;
string s;
int main()
{
freopen("way.in","r",stdin);
freopen("way.out","w",stdout);
scanf("%lld",&n);
for(int i=0;i<n;i++)
{
cin>>s;
if(s[0]==‘l‘)//向左转!
{
fx--;
if(fx==-1)//转了一圈
{
fx=3;
}
}
else if(s[0]==‘r‘)//向右转!
{
fx++;
if(fx==4)//转了一圈
{
fx=0;
}
}else//齐步走!
{
bj=1;//这个是标记,如果一直在原地转圈圈是要输出(0,0)的。
shu=0;
for(int j=0;j<s.length();j++)//计算出走的步数。
{
shu*=10;
shu+=s[j]-‘0‘;
}
if(fx==0)//打表真香
{
y+=shu;
}
if(fx==1)
{
x+=shu;
}
if(fx==2)
{
y-=shu;
}
if(fx==3)
{
x-=shu;
}
printf("(%lld,%lld)\n",x,y);//输出结果
}
}
if(bj==0)
{
cout<<"(0,0)"<<endl;
}
return 0;
}
这个题就这么愉快的结束了,下个题再见。
标签:image alt mamicode 小孩 cst scanf 包括 math algo
原文地址:https://www.cnblogs.com/lichangjian/p/12906673.html