题解 | #MP3光标位置#
MP3光标位置
http://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
这个题关键点就是想个好的数据结构去描述这个过程,我的数据结构是这样的,要显示这个屏幕的4首歌,那么我需要这个屏幕的第一首的位置,最后一首的位置以及所指向的歌的位置,有了这个思路,你根据题目的逻辑那么就可以写出来了,一些边界情况(特殊情况)比如指向的歌在第一首或最后一首你一一枚举进行考虑就ok了,记得看完给个赞,让我涨涨经验嘛(っ´Ι`)っ。
#include <algorithm>
using namespace std;
int main() {
int m;
while(cin>>m){
string str;
cin>>str;
int n = str.size();
int point=1,start = 1,end = 4;
if(m<=4){
start = 1;
end = m;
for(int i = 0;i<n;i++){
if(str[i]=='U'){
if(point==1){
point = end;
}
else point--;
}//if
else if(str[i]=='D'){
if(point==end){
point = start;
}
else point++;
}//if
}//for
}//最外层if,m<=4
else{
for(int i = 0;i<n;i++){
if(str[i]=='U'){
if(point==1){
start = m-3;
end = m;
point = m;
}
else if(point==start){
start--;
point--;
end--;
}
else{
point--;
}
}//if U
else if(str[i]=='D'){
if(point==m){
point = 1;
start = 1;
end = 4;
}
else if (point==end){
end++;
point++;
start++;
}
else{
point++;
}
}//else if D
}//for
}//m>10
for(int i =start;i<=end;i++){
cout<<i<<' ';
}
cout<<endl<<point<<endl;
}
}