题解 | MP3光标位置

#include <iostream>

using namespace std;

int main() {

    int num;

    string op;

    cin >> num >> op;

    int i = 1, j = 4;  //窗口位置

    int n = 1; //初始序号位置

    for (char c : op) {

        switch (c) {

            case 'U': //向上操作

                if (n != 1) {   //光标不处于第一行

                    if (n == i) { //如果光标处于窗口顶端,向上滚动窗口

                        i--;

                        j--;

                    }

                    n--;

                } else { //光标在第一行,将窗口滚动到最后一页

                    n = num;

                    i = num - 3;

                    j = num;

                }

                break;

            case 'D': //向下操作

                if (n != num) { //光标不处于第一行

                    if (n == j) {   //如果光标处于窗口底端,向下滚动窗口

                        i++;

                        j++;

                    }

                    n++;

                } else { //光标在最后一行,将窗口滚动到第一页

                    n = 1;

                    i = 1;

                    j = 4;

                }

                break;

            default:

                break;

        }

    }

    if (num < 5) {

        for (int i = 1; i <= num; i++) { //小于一页直接输出

            cout << i << ' ';

        }

    } else {

        for(int l=i;l<=j;l++) {  //大于一页按照当前窗口输出

            cout<<l<<' ';

        }

    }

    cout<<endl;

    cout << n;

}

// 64 位输出请用 printf("%lld")

全部评论

相关推荐

喵_coding:年底缺人是短视频营造出来的 而且一般说的也很宽泛 不是特指后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务