根据题意写的没有优化过,能看懂就行
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,top,tail,cur;
string str;
cin >> n >> str;
if(n <= 4)
{
cur = 1;top = 1;tail = n;
for(int i = 0;i<str.length();i++)
{
if(str[i] == 'U'){
cur = (cur-1)%4;
(cur == 0)?cur = n:cur = cur;
}else if(str[i] == 'D'){
cur = (cur+1)%4;
(cur == 0 )?cur = n:cur = cur;
}
}
for(int i =top;i<=n;i++)
{
cout << i << " ";
}
cout << endl << cur;
}
else if(n > 4)
{
cur = 1;top = 1;tail = 4;//先变top和tail,判断cur在不在之间
for(int i =0;i<str.length();i++)
{
if(str[i] =='U')
{
cur = (cur -1)%n;
(cur==0)?cur=n:cur=cur;
if(cur == n)
{
tail = n;top = n-3;
}else if(cur == top -1)
{
top = cur;tail--;
(tail ==0)?tail = n:tail = tail;
}
}else if(str[i] == 'D')
{
cur = (cur +1)%n;
(cur==0)?cur=n:cur=cur;
if(cur == 1)
{
top = 1;tail = 4;
}else if(cur == tail + 1)
{
tail = cur; top++;
(top == 0)?top = 1:top = top;
}
}
}
for(int i =top;i<=tail;i++)
{
cout << i << " ";
}
cout << endl << cur;
}
return 0;
}