当前位置: 首页 > news >正文

【武汉理工大学第四届ACM校赛】copy

copy

  • 题目描述
  • 代码
  • 代码解释:

链接:https://ac.nowcoder.com/acm/contest/108683/E

题目描述

小s苦于在不同的窗口之间复制粘贴, 于是他突发奇想,把所有要复制的内容都复制到了一个剪贴板中,但他突然发现由于他复制的来源太多,他现在不知道该怎么粘贴了。
小s使用的剪贴板会存储最近复制的 n 条信息,每次粘贴其中的一条会使这条变为最新的,如在依次复制了1,2,3后,使用copy 2则会粘贴2, 同时剪切板内容变为2, 1, 3,
保证剪贴板中内容不同。
请输出一个粘贴的过程,使得粘贴过后的文本内容(每次粘贴后自动换行),和给定的文件文本内容一致。
输入描述:
第一行输入一个整数 n, 表示 剪切板中有 n 行数据
接下来 n 行,每行输入一个字符串 si
表示剪切板中数据的内容
第 n+2 行输入一个整数 m,表示文件共有 m 行
接下来m 行,每行输入一个字符串ti表示文件中的内容
输出描述:
第一行输出需要在这个文件中进行操作的数量
之后每行输出一个整数,表示要粘贴剪切板中的第几行
示例1
输入
3
a
b
c
3
c
b
a
输出
3
3
3
3
备注:
n,m≤1000
∣si∣,∣ti ∣≤1000
样例中剪贴板初始内容为a,b,c粘贴c后变为c,a,b
所以再粘贴b为粘贴剪贴板第三行的内容

代码

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();String[] clipboard = new String[n];for (int i = 0; i < n; i++) {clipboard[i] = sc.next();}int m = sc.nextInt();String[] target = new String[m];for (int i = 0; i < m; i++) {target[i] = sc.next();}List<Integer> operations = new ArrayList<>();List<String> currentClipboard = new ArrayList<>();// 初始化剪贴板for (int i = 0; i < n; i++) {currentClipboard.add(clipboard[i]);}for (String s : target) {// 检查目标字符串是否在剪贴板中if (!currentClipboard.contains(s)) {System.out.println(-1);return;}int index = currentClipboard.indexOf(s);operations.add(index + 1);// 更新剪贴板,将被粘贴的元素移到最前面String temp = currentClipboard.remove(index);currentClipboard.add(0, temp);}System.out.println(operations.size());for (int op : operations) {System.out.println(op);}}
}

代码解释:

  1. 输入处理:读取剪贴板的大小n和初始内容,以及目标文件的行数m和内容。
  2. 初始化剪贴板:将剪贴板的初始内容存储在一个List中。
  3. 生成操作序列:
    遍历目标文件的每一行内容。
    检查该内容是否在当前剪贴板中,如果不存在,输出-1并退出。
    如果存在,记录该内容在剪贴板中的位置(索引+1,因为题目要求输出从1开始的索引)。
    更新剪贴板,将被粘贴的内容移到最前面。
  4. 输出结果:输出操作的数量和具体的操作序列。
    这段代码使用List来模拟剪贴板的行为,通过remove和add操作来实现将被粘贴的元素移到最前面。这样可以确保每次操作都符合剪贴板的规则,并且生成的操作序列能够正确生成目标文件的内容。
http://www.xdnf.cn/news/91243.html

相关文章:

  • 凡清亮相第十五届北京国际电影节电影嘉年华,用音乐致敬青春与梦想
  • 调和平均数通俗易懂的解释以及为什么这样定义,有什么用
  • 《 C++ 点滴漫谈: 三十四 》从重复到泛型,C++ 函数模板的诞生之路
  • 客户对质量不满意,如何快速响应?
  • ycsb性能测试的优缺点
  • GRS认证有什么要求?GRS认证要审核多久,GRS认证流程
  • 旅游行业路线预定定制旅游小程序开发
  • vivado XMP使用
  • 2023蓝帽杯初赛内存取证-1
  • ROS2 安装详细教程,Ubuntu 22.04.5 LTS 64 位 操作系统
  • Nacos 是如何实现 Raft 协议的?Raft 协议的关键组件和流程是什么?
  • Java基础复习(JavaSE进阶)第八章 多线程
  • C++静态与动态联编区别解析
  • Vue3简介
  • TDengine 查询引擎设计
  • 滑动模式观测器(Sliding mode observer)
  • 机器视觉的液晶屏点胶应用
  • 飞搭系列 | 组件增加标记,提升用户体验
  • android开发-BuildConfig无法生成
  • [Java · 铢积寸累] 数据结构 — 二维数组 - 概念引入
  • 潮玩+智显 |电子价签演绎潮玩信息智显的百变状态
  • Linux系统之----进程的概念
  • GpuGeek:以弹性算力与全栈服务赋能产业智能升级
  • 继承相关知识
  • Kinibi-610a:面向芯片厂商与设备制造商的TEE升级详解
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.25)
  • ctfshow web类 2-7题
  • pip的源管理和包管理
  • 初级云计算运维工程师学习二
  • DAS(分布式声波传感)工作流程