UVa11988 Broken Keyboard(练习链表使用)

   向量和数组的优势是可以随机的存取元素和在末尾添加删除元素,而当插入元素时,需要移动大量的数据,消耗大量的时间。而链表的优势是可以在O(1)删除和插入数据。所以在频繁移动元素时,可以使用链表。

    分析:如果用一个数组来保存,题目中的文本随着光标位置的移动需不断的插入字符,这样会导致大量字符移动问题。解决方案是采用链表,将字符串保存在buf[1...n]中,然后用next[i]表示下标为i的字符的下一个位置的下标(链表不一定用指针实现)。为了方便起见,用一个虚拟的next[0]指向显示屏最右边的字符下标。再用cur表示光标的位置,即为光标在buf[cur]的右边.cur==0说明光标在显示屏的最左边。还用last表示显示屏最右边的字符。

#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include<string.h>
#include <algorithm>
using namespace std;
const int maxn = 100000 + 5;char buf[maxn];
int Next[maxn];int main(){int cur, last,n;while (scanf("%s", buf+1)!=EOF){n = strlen(buf + 1);cur = last = 0;for (int i = 1; i <= n; i++){if (buf[i] == '[')cur = 0;    //house键else if (buf[i] == ']')cur = last; //end键else{Next[i] = Next[cur];   //字符i的下一个位置为cur的下一个位置Next[cur] = i;         //curr的下一个位置为i//更新cur和lastif (cur == last)last = i;   //cur等于i表示光标在显示屏最后一个字符cur = i;  //移动光标}}Next[last] = 0;  //结束位置for (int i = Next[0]; i != 0; i = Next[i])printf("%c", buf[i]);printf("\n");}return 0;
}

  

转载于:https://www.cnblogs.com/td15980891505/p/5915814.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

virtualbox配置apache_virtualbox 网络配置 (转)

http://www.vmbest.com/school/2-virtualbox-school/13-virtualbox-net-config-four-plan“网络”配置页面有4个方案&#xff1a;1&#xff1a;NAT 网络地址转换(Network Address Translation)2&#xff1a;Birdged Network 桥接3&#xff1a;Internal Network 内部网络(可以…

请领导批阅文件怎么说_领导说“谢谢”,该怎么回?低情商才说不客气,高情商的都这样说!...

职场中&#xff0c;当我们顺手帮了领导个小忙或者领导跟我们要工作资料&#xff0c;我们发给领导的时候&#xff0c;领导可能会顺口说“收到&#xff0c;谢谢”&#xff0c;这样的时候&#xff0c;其实领导就是表示收到了。我们如何回复&#xff0c;才不至于失了礼貌&#xff0…

387. First Unique Character in a String

Given a string, find the first non-repeating character in it and return its index. If it doesnt exist, return -1. Examples: s "leetcode" return 0.s "loveleetcode", return 2. 思路&#xff1a;扫一遍&#xff0c;用array记录char的重复次数。…

vue的简单学习

vue和thymeleaf &#xff1a; 若先显示框架后加载数据则用vue 若后端处理好之后发送给前端页面显示用thymeleaf (弹幕) 对于前后端分离的认识&#xff1a; 使用vue 将前端页面、框架等建立好&#xff0c;只需要后端发送数据即可 但thymeleaf就需要在服务器启动之前将数据保存到…

easyui下拉框option写死_JavaScript_jQuery+easyui中的combobox实现下拉框特效,1.第一种写法:Input框中显示: - phpStudy...

jQueryeasyui中的combobox实现下拉框特效1.第一种写法&#xff1a;Input框中显示&#xff1a;2. 第二种用法&#xff0c;在list列表中显示&#xff1a;类别3. 第二种的另一种写法&#xff1a;类别以上3种方法均可实现jQuery.easyui的下拉框特效&#xff0c;大家自由选择&#x…

Selleck --- 01Cookie

1. //1.设置Cookie function setCookie(name,value,days) {var date new Date();date.setDate(date.getDate() days);document.cookie name "" value ";expires" date; } console.log(setCookie("pwd","5566778899",1)); //获取c…

audino python_用 Python 实现 PowerDesigner 数据模型文件的处理

简述目前在银行研发中心做项目管理工作。我们单位的项目经理从需求、设计、编码到测试以及上线&#xff0c;都要有很大程度的参与。没有工具支持&#xff0c;很多事根本忙不过来、或者没法在有限的时间里保证项目质量。大概半年前开始接触PYTHON&#xff0c;多多少少写了一些能…

JS~~~ 前端开发一些常用技巧 模块化结构 命名空间处理 奇技淫巧!!!!!!...

前端开发一些常用技巧 模块化结构 &&&&& 命名空间处理 奇技淫巧&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;2016-09-29 17:16:39 #####背景&#xff1a; 前端开发过程中&#xff0c;创建js对象…

会移动的文字(Marquee)

Marquee标记用于在可用浏览区域中滚动文本。这个标记只适用于IE3以后的版的浏览器。 ??   格式&#xff1a; ??   <MARQUEE ALIGN"…" ??   BEHAVIOR"…" ??   BGCOLOR"…" ??   DIRECTION"…" ??   HEIGH…

vscode 英伟达tk1_英伟达的未来,不只是GPU

成立于1993年的英伟达&#xff0c;最为人熟知的就是他们的GPU。尤其是进入最近几年&#xff0c;因为AI的火热&#xff0c;英伟达GPU的关注度暴增&#xff0c;行业对他们在这个领域的认可程度也达到了前所未有的高度。但其实GPU只是英伟达的根本。历经过去几年的收购和产品线拓展…

语法2

页面(PAGE)标记(TAGS) HTML 文件结构(Document Structures)<html>...</html><head>...</head><body>...</body><HTML><HEAD> <title>, <base>, <link>, <isindex>, <meta></HEAD><…

生成n对括号的合法全排列

生成n对括号的合法全排列&#xff1a; 给定一整数N&#xff0c;输出N对括号的合法全排列 例&#xff1a; 2 3 ()() (()) ()()() (())() ()(()) ((())) 分析&#xff1a; 很经典的需要迭代来进行实现。 迭代的关键在于找到跳出迭代的条件&#xff0c;以及每次迭代的策略。 出口&…

springMVC 源码学习-请求映射原理

一、DispatcherServlet的继承关系 1、FrameworkServlet HttpServlet中的doGet等方法在FrameworkServlet之中重写了&#xff0c;都是调用该方法&#xff1a; 在这个方法内部调用doServlce的方法 这个doService的方法在FrameworkServlet中是一个抽象方法&#xff0c;说明是交给它…

constraintlayout布局新特性_AMD发布Ryzen PRO 4000系列移动处理器:多了超线程和商用安全特性...

昨日晚间&#xff0c;AMD正式发布了基于Renoir的最新一代商用移动处理器Ryzen PRO 4000系列&#xff0c;本次共发布3款处理器&#xff0c;分别是Ryzen 7 PRO 4750U、Ryzen 5 PRO 4650U和Ryzen 3 PRO 4450U&#xff0c;我们制作了规格对比表&#xff0c;如下&#xff1a;从规格对…

网页设计中HTML常范的五个错误

1.网页背景色的设置犯错机率&#xff1a;很大普遍性&#xff1a;较广犯错可能性&#xff1a;懒/不知道约2年前我曾发现21cn上出现过一次没有设置背景色的情况&#xff0c;当时我用Email通知了他们&#xff0c;自此之后这个问题我从没犯过。绝大部分人的窗口背景颜色都是白色&am…

mkdir与mkdirs的区别

项目中需要在代码中读取或创建文件保存路径&#xff0c;用到了mkdir&#xff0c;查看还有个mkdirs方法&#xff0c;这里记录一下两者的区别。 1、关于两者的说明如下&#xff1a; boolean mkdir() : 创建此抽象路径名指定的目录。 boolean mkdirs() : 创建此抽象路径名指定…

易支付系统源码_刷脸支付系统源码,插件源码合作模式有哪些,采购源码需要注意什么...

对刷脸支付比较关注的朋友&#xff0c;应该都知道源码。当拥有这个&#xff0c;就意味着有了独立的系统。也意味着可以打造自己的品牌&#xff0c;转化自己资源&#xff0c;获取更多的利润。但是想拥有一套源码也是不简单的&#xff0c;不仅因为编写的难度和价格&#xff0c;也…

网吧修改

Windows Registry Editor Version 5.00 (打开任务管理器) [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]"DisableTaskMgr"dword:00000000 (恢复桌面右键菜单) [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Poli…

SpringMVC源码-不同类型的参数解析

随便写一个demo: RequestMapping("/car/{id}")public Map<String, Object> getCar(PathVariable("id") Integer id,RequestParam("type") String type,RequestParam("hobby") List<String> hobby){Map<String, Object&…

Gym 100917J---Judgement(01背包+bitset)

题目链接 http://codeforces.com/gym/100917/problem/J Description standard input/outputStatementsThe jury of Berland regional olympiad in informatics does not trust to contest management systems, so the Berland regional programming contest is judged by the n…