您的位置:首页 > 其它

模拟——玩具谜题

2017-08-28 20:07 239 查看

题目来源

洛谷P1563玩具谜题

https://www.luogu.org/problem/show?pid=1563

思路

结构体存小人信息(名字toy[i].na+方向toy[i].dir[朝圈外1 朝圈内-1])

pos表示当前位置

输入步骤(方向d[向左-1 向右1]+步数s)

则pos=(pos-d*toy[pos].dir*s)

(

   向左&&朝外==向右&&朝内==逆时针 => pos=pos-s(mod n&&pos>0)

   向左&&朝内==向右&&朝外==顺时针 => pos=pos+s(mod n&&pos>0)

)

代码(C++)

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int n,m,pos=1,d,s;
struct p{int dir;string na;}toy[100010];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>toy[i].dir>>toy[i].na;
if(toy[i].dir==0) toy[i].dir=-1;
}
for(int i=1;i<=m;i++)
{
cin>>d>>s;
s=s%n;
if(d==0)     d=-1;
if(d*toy[pos].dir==-1)
{
pos+=s;
pos%=n;
}
else
{
pos=pos-s;
pos%=n;
pos+=n;
pos%=n;
}
if(pos==0)    pos=n;
}
cout<<toy[pos].na;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  模拟