洛谷:P1563 玩具谜题

#include<iostream>
#include<cmath>
using namespace std;
int n,m,tow[100005],num[200005];
char names[100005][20];

char* f(int now,int nown){//输入当前的玩具序号和进行到第几次查找
    if(nown>=m)return names[now];//如果次数够了,返回当前玩具名称
    now+=2*((num[nown*2]!=tow[now])-0.5)*num[nown*2+1];//找到下一个玩具的序号,求出需要往哪个方向再*需要走的步数
    while(now<0)now+=n;//避免出界
    now%=n;
    //cout<<names[now]<<endl;
    return f(now,nown+1);//进行下一次查找
}

int main(){
    int i=0;
    cin>>n>>m;
    for(i=0;i<n;i++){
        cin>>tow[i]>>names[i];
    }
    for(i=0;i<m;i++){
        cin>>num[i*2]>>num[i*2+1];//直接用偶数保存方向,奇数保存次数
    }
    cout<<f(0,0)<<endl;
    return 0;
}

地址:https://www.luogu.com.cn/problem/P1563

猜你喜欢

转载自www.cnblogs.com/forwhat00/p/13210235.html
今日推荐