吐槽
花费了好久好久,发现在以下地方出错
首先虽然我们定义了是从1开始,但是push时,却是从0开始
其次,在index±n的地方出错,应该是<=0时需要+n,大于n的时候-n。
需要注意就是搞清楚什么时候加,什么时候减。
题目
https://www.luogu.com.cn/problem/P1563
#include<bits/stdc++.h> using namespace std; struct node{ int face; char name[15]; }; int main() { vector<node> v; int n,m; cin>>n>>m; node temp; temp.face=100; v.push_back(temp); for(int i=1;i<=n;i++){ node d; cin>>d.face>>d.name; v.push_back(d); } int index=1; for(int i=1;i<=m;i++){ int a,b; cin>>a>>b; if(v[index].face==0){ if(a==0){ index-=b; if(index<=0) index+=n; }else{ index+=b; if(index>n) index-=n; } } else{ if(a==1){ index-=b; if(index<=0) index+=n; } else{ index+=b; if(index>n) index-=n; } } } cout<<v[index].name<<endl; return 0; }