注意边界情况。
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
int music[N];
int m;
int hh, tt, idx;
inline void move2(char c)
{
if (c == 'U') {
if (idx > 1)
idx--;
else
idx = m;
}
else if (c == 'D') {
if (idx < 3)
idx++;
else
idx = 1;
}
}
inline void move(char c)
{
if (idx == 1 && c == 'U') {
hh = m - 3, tt = m, idx = m;
}
else if(idx == m && c == 'D') {
hh = 1, tt = 4, idx = 1;
}
else if (idx == hh && c == 'U') {
hh--, tt--, idx = hh;
}
else if (idx == tt && c == 'D') {
hh++, tt++, idx = tt;
}
else {
if (c == 'U') {
idx--;
}
else if (c == 'D') {
idx++;
}
}
//cout << "hh: " << hh << " tt: " << tt << " idx: " << idx << endl;
}
inline void init(int n)
{
hh = 1, tt = n < 4 ? n : 4, idx = 1;
for (int i = 1; i <= n; i++) {
music[i] = i;
}
}
int main()
{
int n;
string opt;
for (; cin >> n >> opt; memset(music, 0, sizeof(music))) {
m = n;
init(n);
if (n < 4)
for (const auto &c : opt)
move2(c);
else
for (const auto &c : opt)
move(c);
for (int i = hh; i <= tt; i++)
cout << i << " ";
cout << endl << idx << endl;
}
return 0;
} 
京公网安备 11010502036488号