题目地址:http://acm.fzu.edu.cn/problem.php?pid=2091
用一个大数组存播放列表,同时记录当前播放的曲号(dq)和播放列表末尾的曲号(*mw);
也可以用栈进行操作;
按照题目要求进行相应操作即可;
AC代码:
#include<iostream> #include<string> #include<cstring> using namespace std; int x[10000+500+10]; int main() { ios::sync_with_stdio(false); int t; cin>>t; while(t--) { memset(x,0,sizeof(x)); int m,n; cin>>n>>m; x[1]=1; int dq=1;//记录当前的曲号 int *mw=&x[1];//记录播放列表末尾的曲号 while(m--) { string c; cin>>c; //模拟播放器操作 if(c=="PRE") { if(mw!=&x[1]) { *mw=0; mw--; dq=*mw; } else dq=1; } else if(c=="PLAY") { int q; cin>>q; dq=q; } else if(c=="NEXT") { if(dq!=n) { dq++; } } //播放列表末尾和当前播放的曲目不同时添加到播放列表末尾 if(dq!=*mw) { mw++; *mw=dq; } cout<<dq<<endl; } } }
评论