题目地址: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;
}
}
}
评论