基础编程题之MP3
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础编程题之MP3相关的知识,希望对你有一定的参考价值。
题目
解题思路
这道题虽然描述复杂,但本质很简单,我们只需定义两个变量:first和choose,分别指向一页的第一首歌和选中的歌,然后根据具体的业务逻辑写出不同条件情况下的代码即可。和实际公司工作中的开发类似,具体描述标注其中
代码
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;//歌曲数目
string action;//用户行为
while(cin>>n>>action)
{
int first=1;//表示当前页的第一首歌
int choose=1;//表示当前页中选中的歌
if(n<=4)//歌曲<=4的情况
{
for(int i=0;i<action.size();i++)
{
if(choose==1 && action[i]=='U')//如果选中的是第一首歌并且向上走
{
choose=n;//选中最后一首歌
}
else if(choose==n && action[i]=='D')//如果选中的是最后一首歌,并且向下走
{
choose=1;//选中第一首歌
}
else if(action[i]=='U')//正常情况向上走
{
choose--;
}
else//正常情况向下走
{
choose++;
}
}
for(int i=1;i<=n;i++)
{
cout<<i<<" ";
}
cout<<endl;
cout<<choose<<endl;
}
else//歌曲>4的情况
{
for(int i=0;i<action.size();i++)
{
if(first==1 && choose==1 && action[i]=='U')//如果在第一页并且选中了第一页的第一首歌,而且向上翻
{
first=n-3;//指向最后一页的第一个
choose=n;
}
else if(first==n-3 && choose==n && action[i]=='D')//如果在最后一页并且选中了最后一页的最后一首歌,而且向下翻
{
first=choose=1;
}
else if(first!=1 && choose==first && action[i]=='U')//如果不是第一页,选中了本页的第一首歌,那么整体平移
{
first--;
choose--;
}
else if(first!=n-3 && choose==first+3 && action[i]=='D')//如果不是最后一页,选中了本页的最后一首歌,那么整体平移
{
first++;
choose++;
}
else if(action[i]=='U')
{
choose--;
}
else
{
choose++;
}
}
for(int i=first;i<=first+3;i++)
{
cout<<i<<" ";
}
cout<<endl;
cout<<choose<<endl;
}
}
}
以上是关于基础编程题之MP3的主要内容,如果未能解决你的问题,请参考以下文章