不知道为啥思路和题解一样还有问题……,数组都换成结构体了,判断部分一样,但结果就是和题解不一样 附代码:
#include<iostream>
using namespace std;
struct wanju{ //玩具
int lw; //玩具的编码(里外)
string na;//玩具的名字
}x[100100];//设置大点免得超出数据
struct zhiling{ // 指令
int lz; //指令的编码(向左还是向右)
int s; //移动几格
}a[100100];
int m,n,xr=1;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>x[i].lw>>x[i].na;
}
for(int i=1;i<=m;i++){
cin>>a[i].lz>>a[i].s;
}
for(int i=1;i<=m;i++){
if(x[i].lw==a[i].lz){
xr=xr-a[i].s;
if(xr<=0){
xr=xr+n;
}
}
else{
xr=xr+a[i].s;
if(xr>n){
xr=xr-n;
}
}
}
cout<<x[xr].na<<endl;
return 0;
}
下面是我对照的题解:
#include<iostream>
using namespace std;
struct wanju{ //玩具
int lw; //玩具的编码(里外)
string name;//玩具的名字
}xr[100100];//设置大点免得超出数据
struct zhiling{ // 指令
int lr; //指令的编码(向左还是向右)
int cnt; //移动几格
}a[100100];
int m,n,x=1;
int main(){
cin>>n>>m;//输入流
for(int i=1;i<=n;i++){
cin>>xr[i].lw>>xr[i].name;
}
for(int i=1;i<=m;i++){
cin>>a[i].lr>>a[i].cnt;
}
for(int i=1;i<=m;i++){//移动
if(xr[x].lw==a[i].lr){
x=x-a[i].cnt;
if(x<=0){
x=n+x;
}
}else{
x=x+a[i].cnt;
if(x>n){
x=x-n;
}
}
}
cout<<xr[x].name<<endl;//输出
return 0;
}