HJ64 MP3光标位置 ●●

2024-02-15 22:59
文章标签 位置 光标 mp3 hj64

本文主要是介绍HJ64 MP3光标位置 ●●,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HJ64 MP3光标位置 ●●

描述

MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲。为了简化处理,假设每屏只能显示4首歌曲,光标初始的位置为第1首歌。

现在要实现通过上下键控制光标移动来浏览歌曲列表,控制逻辑如下:

1、 歌曲总数<=4的时候,不需要翻页,只是挪动光标位置。
光标在第一首歌曲上时,按Up键光标挪到最后一首歌曲;光标在最后一首歌曲时,按Down键光标挪到第一首歌曲。
在这里插入图片描述
其他情况下用户按Up键,光标挪到上一首歌曲;用户按Down键,光标挪到下一首歌曲。
在这里插入图片描述
2、 歌曲总数大于4的时候(以一共有10首歌为例):
特殊翻页:屏幕显示的是第一页(即显示第1 – 4首)时,光标在第一首歌曲上,用户按Up键后,屏幕要显示最后一页(即显示第7-10首歌),同时光标放到最后一首歌上。同样的,屏幕显示最后一页时,光标在最后一首歌曲上,用户按Down键,屏幕要显示第一页,光标挪到第一首歌上。
在这里插入图片描述
一般翻页:屏幕显示的不是第一页时,光标在当前屏幕显示的第一首歌曲时,用户按Up键后,屏幕从当前歌曲的上一首开始显示,光标也挪到上一首歌曲。光标当前屏幕的最后一首歌时的Down键处理也类似。
在这里插入图片描述
其他情况,不用翻页,只是挪动光标就行。

数据范围:命令长度 1 ≤ s ≤ 100 1\le s\le 100 1s100,歌曲数量 1 ≤ n ≤ 150 1\le n \le 150 1n150
进阶:时间复杂度: O ( n ) O(n) O(n) ,空间复杂度: O ( n ) O(n) O(n)

输入描述:

1 输入歌曲数量
2 输入命令 U或者D

输出描述:

1 输出当前列表
2 输出当前选中歌曲

示例

输入:
10
UUUU
输出:
7 8 9 10
7

题解

1. 模拟

变量:
pageNum 记录可显示的最大行数(1~4),由 n 决定;
first 记录当前页面的第一个数字;
idx 记录当前的光标位置(1~pageNum);
curr 记录当前光标指向的数字。

在光标移动过程中,维护以上变量,具体情况有:

  1. 首行往上,变换首行:
    – 首行为1,翻页,到最尾;
    – 首行为其他,滚动
  2. 尾行往下,变换首行:
    – 尾行为n,翻页,到开头
    – 尾行为其他,滚动
  3. 中间行往上或往下,移动光标即可。

时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)

#include<iostream>
#include<string>
using namespace std;
#define maxNum 4
int main(){int n;string str;while(cin >> n >> str){if(n == 1){cout << 1 << endl << 1;continue;}int pageNum = maxNum;if(n <= maxNum) pageNum = n;            // pageNum 记录显示的最大行数int first = 1, idx = 1, curr = 1;for(char ch: str){if(1 == idx && ch == 'U'){          // 首行往上,需要变换首行if(1 == curr){                  // 首行为1,翻页,到最尾idx = pageNum;first = n - pageNum + 1;curr = n;}else{                          // 首行为其他,滚动--curr;--first;}}else if(pageNum == idx && ch == 'D'){    // 尾行往下,变换首行if(n == curr){                        // 尾行为n,翻页,到开头idx = 1;first = 1;curr = 1;}else{                                // 尾行为其他,滚动++curr;++first;}}else{if(ch == 'D'){                        // 移动光标++idx;++curr;}else if(ch == 'U'){--idx;--curr;}}}for(int i = 0; i < pageNum; ++i){cout << first + i << " ";}cout << endl << curr << endl;}return 0;
}

这篇关于HJ64 MP3光标位置 ●●的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/712799

相关文章

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

PyCharm如何更改缓存位置

《PyCharm如何更改缓存位置》:本文主要介绍PyCharm如何更改缓存位置的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm更改缓存位置1.打开PyCharm的安装编程目录2.将config、sjsystem、plugins和log的路径

如何解决Pycharm编辑内容时有光标的问题

《如何解决Pycharm编辑内容时有光标的问题》文章介绍了如何在PyCharm中配置VimEmulator插件,包括检查插件是否已安装、下载插件以及安装IdeaVim插件的步骤... 目录Pycharm编辑内容时有光标1.如果Vim Emulator前面有对勾2.www.chinasem.cn如果tools工

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

Linux Centos 迁移Mysql 数据位置

转自:http://www.tuicool.com/articles/zmqIn2 由于业务量增加导致安装在系统盘(20G)磁盘空间被占满了, 现在进行数据库的迁移. Mysql 是通过 yum 安装的. Centos6.5Mysql5.1 yum 安装的 mysql 服务 查看 mysql 的安装路径 执行查询 SQL show variables like

PDFQFZ高效定制:印章位置、大小随心所欲

前言 在科技编织的快节奏时代,我们不仅追求速度,更追求质量,让每一分努力都转化为生活的甜蜜果实——正是在这样的背景下,一款名为PDFQFZ-PDF的实用软件应运而生,它以其独特的功能和高效的处理能力,在PDF文档处理领域脱颖而出。 它的开发,源自于对现代办公效率提升的迫切需求。在数字化办公日益普及的今天,PDF作为一种跨平台、不易被篡改的文档格式,被广泛应用于合同签署、报告提交、证书打印等各个