定义光标所指的歌曲序号和光标在屏幕中的位置,对于光标处于第一页和光标处于最后一页分别进行处理,并且判断一般情况进行处理,最后根据光标在屏幕中的位置输出当前列表和选中歌曲,对于歌曲数小于4的情况当前列表就是所有歌曲。
#include <iostream> using namespace std; int main() { int order = 0; int n; string s; cin >> n; cin >> s; int select = 0; for (char letter : s) { if (letter == 'U') { if (order > 0) { order--; } else { if (select == 0) { order = 3; } } select = (select - 1 + n) % n; } else { if (order < 3) { order++; } else { if (select == n - 1) { order = 0; } } select = (select + 1) % n; } } if (n < 4) { for (int i = 1; i <= n; i++) { cout << i << ' '; } } else { for (int i = select - order; i <= select - order + 3; i++) { cout << i + 1 << ' '; } } cout << endl; cout << select + 1; return 0; } // 64 位输出请用 printf("%lld")