根据题意写的没有优化过,能看懂就行

#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;
}