题解 | #MP3光标位置##if else套娃模式#
MP3光标位置
http://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
char str[100];
scanf("%s",str);
int cursor=1;
if(n<=4)//判断n<=4的情况
{
for(int i=0;i<strlen(str);i++)
{
if(str[i]=='D')//向下按键时
{
if(cursor<n)//光标不在最后一个就下移
cursor++;
else if(cursor==n) //光标在最后一个就回到顶部
cursor=1;
}
if(str[i]=='U')//向上按键时
{
if(cursor>1)//光标不在第一个就上移
cursor--;
else if(cursor==1) //光标在第一个时就去到底部
cursor=n;
}
}
for(int i=1;i<=n;i++)
printf("%d ",i);
printf("\n%d",cursor);
return 0;
}
int up=1,down=4; //n大于4时的情况
for(int i=0;i<strlen(str);i++)
{
if(str[i]=='D')//向下按键时
{
if(cursor==n)//光标在底部则让光标回到顶部,界面up-down重新更新为1-4
{
cursor=1;
up=1;
down=up+3;
}
else if(cursor<n&&cursor>=up&&cursor<down)//光标处于界面中间且不为down时只需光标下移
{
cursor++;
}
else if(cursor<n&&cursor==down)//光标处于界面底部为down时需光标下移,up和down同步下移
{
cursor++;
up++;
down++;
}
}
if(str[i]=='U')//向上按键时
{
if(cursor==1)//光标在底部则让光标去到底部,界面up-down重新更新为n-3 - n
{
cursor=n;
up=n-3;
down=n;
}
else if(cursor>1&&cursor>up&&cursor<=down)//光标处于界面中间且不为up时只需光标上移
{
cursor--;
}
else if(cursor>1&&cursor==up)//光标处于界面顶部为up时需光标上移,up和down同步上移
{
cursor--;
up--;
down--;
}
}
}
for(int i=0;i<4;i++)
printf("%d ",up+i);
printf("\n%d",cursor);
return 0;
}