题解 | #MP3光标位置#
MP3光标位置
http://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
#include<iostream>
using namespace std;
#include<string>
int main()
{
int n,now;//输入的歌曲数n和当前歌曲位置now
string s;//移动位置的字符串
while(cin>>n>>s)
{
//长度小于等于4特殊,另行处理
if(n<=4)
{
for(int i=1;i<=n;i++)
{
cout<<i<<' ';
}
now=1;
int len=s.length();
for(int i=0;i<len;i++)
{
if(s[i]=='U')
{
now--;
if(now==0)
now=n;
}
else
{
now++;
if(now>n)
{
now=1;
}
}
}
cout<<'\n'<<now<<endl;
continue;//用continue跳过此次循环
}
//这是歌曲数目n大于4情况
now=1;
int a[5]={0,1,2,3,4};//1-4这是初始页面的歌曲序号
int len=s.length();
for(int i=0;i<len;i++)
{
if(s[i]=='D')
{
now++;
if(now>4)
{
if(a[now-1]==n)
{
now=1;
a[1]=1;
a[2]=2;
a[3]=3;
a[4]=4;
}
else
{
a[1]++;
a[2]++;
a[3]++;
a[4]++;
now=4;
}
}
}
if(s[i]=='U')
{
now--;
if(now==0)
{
if(a[now+1]==1)
{
now=4;
a[1]=n-3;
a[2]=n-2;
a[3]=n-1;
a[4]=n;
}
else
{
a[1]--;
a[2]--;
a[3]--;
a[4]--;
now=1;
}
}
}
}
//最后输出当前页面的歌曲和当前光标的歌曲
cout<<a[1]<<' ';
cout<<a[2]<<' ';
cout<<a[3]<<' ';
cout<<a[4]<<' '<<endl;
cout<<a[now]<<endl;
}
return 0;
}