PAT A1032 Sharing

news2024/12/22 20:40:25

1032 Sharing

分数 25

作者 CHEN, Yue

单位 浙江大学

To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same suffix. For example, loading and being are stored as showed in Figure 1.

Figure 1

You are supposed to find the starting position of the common suffix (e.g. the position of i in Figure 1).

Input Specification:

Each input file contains one test case. For each case, the first line contains two addresses of nodes and a positive N (≤105), where the two addresses are the addresses of the first nodes of the two words, and N is the total number of nodes. The address of a node is a 5-digit positive integer, and NULL is represented by −1.

Then N lines follow, each describes a node in the format:

Address Data Next

whereAddress is the position of the node, Data is the letter contained by this node which is an English letter chosen from { a-z, A-Z }, and Next is the position of the next node.

Output Specification:

For each case, simply output the 5-digit starting position of the common suffix. If the two words have no common suffix, output -1 instead.

Sample Input 1:

11111 22222 9
67890 i 00002
00010 a 12345
00003 g -1
12345 D 67890
00002 n 00003
22222 B 23456
11111 L 00001
23456 e 67890
00001 o 00010

Sample Output 1:

67890

Sample Input 2:

 

00001 00002 4
00001 a 10001
10001 s -1
00002 a 10002
10002 t -1

Sample Output 2:

-1

 

 * 寻找有相同后缀的第一个字符位置,如果没有相同后缀,则输出-1;
 *
 * 使用静态数组代替链表。
 *
 * 先各自遍历两个链表,将其所有出现元素的下标记录在hs数组中,每出现一次,对应的元素加一,
 * 最后遍历其中一个链表的元素,查看hs数组中的值,如果对应的值等于2,则为答案。

/**
 * 寻找有相同后缀的第一个字符位置,如果没有相同后缀,则输出-1;
 * 
 * 使用静态数组代替链表。
 * 
 * 先各自遍历两个链表,将其所有出现元素的下标记录在hs数组中,每出现一次,对应的元素加一,
 * 最后遍历其中一个链表的元素,查看hs数组中的值,如果对应的值等于2,则为答案。
*/

#include <iostream>

using namespace std;

struct Node
{
    int add, nex;
    char ch;
};

const int N = 1e5+10;
struct Node a[N];
int hs[N];
int h1, h2, n;

void Read()
{
    cin >> h1 >> h2 >> n;
    for(int i=0; i<n; ++i)
    {
        char ch;
        int add, nex;
        
        cin >> add >> ch >> nex;
        a[add] = {add, nex, ch};
    }
}

int main()
{
    Read();
    
    int temp = h1;
    while(temp != -1)
    {
        hs[temp]++;
        temp = a[temp].nex;
    }
    
    temp = h2;
    while(temp != -1)
    {
        hs[temp]++;
        temp = a[temp].nex;
    }
    
    int res = -1;
    while(h1 != -1)
    {
        if(hs[h1] == 2)
        {
            res = h1;
            break;
        }
        
        h1 = a[h1].nex;
    }
    
    if(res != -1)
        printf("%05d\n", res);
    else printf("%d\n", -1);
    
    return 0;
}

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

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

相关文章

FreeRTOS:任务挂起和恢复

目录 一、任务挂起和恢复定义二、任务挂起2.1含义2.2任务挂起内部实现2.3函数vTaskSuspend() 三、任务恢复3.1含义3.2任务恢复内部实现3.3函数vTaskResume() 四、任务挂起和恢复实验4.1实验要求4.2程序代码 一、任务挂起和恢复定义 有时候我们需要暂停某个任务的运行&#xff…

代码随想录算法训练营第三十二天 | 利润题、覆盖范围题

122.买卖股票的最佳时机II 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;贪心算法也能解决股票问题&#xff01;LeetCode&#xff1a;122.买卖股票最佳时机II_哔哩哔哩_bilibili 状态&#xff1a;根本做不出来&#xff0c;思路太巧了。 思路 想获…

浅谈Java、PHP、C++编程的优缺点

Java 、PHP、C 编程语言都是非常流行的编程语言&#xff0c;在开发、Web 开发、移动应用开发等领域都有广泛的应用。本文将从以下几个方面分析 Java、PHP、C 编程语言的优缺点。 一、Java 编程语言的优缺点 优点 &#xff08;1&#xff09;具有跨平台特性&#xff0c;能够在不…

Java8中DateTimeFormatter真的是线程安全的吗?

文章目录 [toc] 1.背景2.解决办法2.1办法一&#xff1a;换姿势或者升级JDK的版本2.1办法二&#xff1a;更换文件名称字生成策略 Java8中DateTimeFormatter真的是线程安全的吗&#xff1f; 答案是否定的 1.背景 由于之前写了一个旷世的ocr的服务,接入了旷世的FaceID的人脸比对…

初识WebAssembly

WebAssembly是一种新型的低级字节码格式&#xff0c;它可以在现代的浏览器中运行&#xff0c;同时也支持其它的平台&#xff0c;例如Node.js、Web Worker等。WebAssembly的目标是在Web平台上提供一种高效、安全、可移植的运行时环境&#xff0c;可以被用于执行任意类型的二进制…

ChatGPT实现leetcode 刷题和变型

leetcode 刷题和变型 作为一个程序员&#xff0c;Leetcode 是一个非常重要的网站。它不仅可以帮助程序员提高算法和数据结构的能力&#xff0c;还能帮助我们准备技术面试。但是&#xff0c;刷 Leetcode 也需要花费大量的时间和精力来解决各种难题。那么&#xff0c;有没有什么…

达成事务条件的实现原理

事务存在的意义&#xff1a;保证系统中的数据&#xff0c;都是符合预期的&#xff1b;相互关联的数据之间&#xff0c;不会产生矛盾 达成事务的条件 原子性&#xff1a;一个操作&#xff0c;要么同时成功、要么同时失败 隔离性&#xff1a;各业务&#xff0c;读写相互独立 持…

arm 源码编译kernel 对比image zimage uimage vmlinux

一 源码编译kernel 下载交叉编译工具链 下载cc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz &#xff0c;这是官网的。使用下面命令下载。 585 wget https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/gcc-linaro-4.9…

每天一道算法练习题--Day22 第一章 --算法专题 --- ----------最大公约数

关于最大公约数有专门的研究。 而在 LeetCode 中虽然没有直接让你求解最大公约数的题目。但是却有一些间接需要你求解最大公约数的题目。 如何求最大公约数&#xff1f; 定义法 def GCD(a: int, b: int) -> int:smaller min(a, b)while smaller:if a % smaller 0 and b …

一个集团企业,如何从0到1构建信息化系统?

当今时代&#xff0c;信息技术已经成为企业发展不可或缺的一部分&#xff0c;特别是对于一个大型集团公司来说&#xff0c;如何构建一个高效的信息化系统对于其业务发展至关重要。 我们想要构建一个优质高效的信息化系统&#xff0c;首先需要了解现在大的趋势是怎样的。 目前…

【Linux】Linux安装Java环境(OpenJDK)

文章目录 第一步&#xff1a;第二步&#xff0c;选择合适的版本安装&#xff1a;第四步&#xff0c;配置环境变量 linux环境为CentOS7.8 版本。 今天教大家怎么在CentOs环境中安装Java的开发环境。 在安装java之前我们先来了解一下YUM Yum&#xff08;全称为 Yellow dog Updat…

【JavaEE初阶】简单了解wait和notify方法~

目录 &#x1f31f;1、wait() &#x1f31f;2、notify() &#x1f31f;1、wait() &#xff08;1&#xff09;wait()方法与notify()方法都是Object类中的方法。 &#xff08;2&#xff09;wait()是让线程等待一段时间&#xff0c;死等——>状态WAITING:没有时间限制的等待.…

C++ | 语句的基础知识(夯实基础)

本文概要 本篇文章主要介绍数据结构中C的语句内容&#xff0c;适合有零基础的同学&#xff0c;文中描述和代码示例很详细&#xff0c;干货满满&#xff0c;感兴趣的小伙伴快来一起学习吧&#xff01; &#x1f31f;&#x1f31f;&#x1f31f;个人简介&#x1f31f;&#x1f…

CentOS 7.x 安装 ZooKeeper 并实现集群搭建

0. 集群结构 服务器IPhostname节点说明192.168.31.101master主节点192.168.31.102slave1从节点192.168.31.103 slave2 从节点 下面的安装与配置操作需要在三台服务器上都执行一遍。 1. 安装JDK ZooKeeper要求运行在 JDK 环境上&#xff0c;JDK安装教程可参考 CentOS 7.x 安装…

从点赞到数字货币:揭秘Diem币与Facebook的联系

大家都知道Facebook是一个全球知名的社交媒体平台&#xff0c;但你是否听说过与Facebook有关的数字货币Diem币呢&#xff1f;或许你会想&#xff0c;从点赞到数字货币&#xff0c;这是怎么回事&#xff1f;别着急&#xff0c;让我们一起揭秘Diem币与Facebook的联系。 首先&…

IP一键呼叫语音对讲怎么样?

IP一键呼叫语音对讲怎么样&#xff1f; IP一键呼叫语音对讲&#xff0c;让您的生活更加便利和安全&#xff01; 无需复杂设置&#xff0c;轻松实现远程通话&#xff0c;随时随地与家人朋友沟通交流。APP端可实时监控家庭动态&#xff0c;保证家庭安全。 一键呼叫语音功能&am…

微信小程序——自定义组件

自定义组件 一、组件的创建二、组件的引用1、全局引用2、局部引用 三、全局引用和局部引用 一、组件的创建 第一步&#xff1a;在项目的根目录下创建文件夹components。 第二步&#xff1a;在components文件夹下创建文件夹card。 第三步&#xff1a;选中文件夹card 右键 选中…

openwrt广告屏蔽大师修复补丁luci-app-adbyby plus + lite

openwrt广告屏蔽大师修复补丁 目前使用方式然而有规则无法下载的通病所以可以手工拷贝随便哪里来的规则最后提示 补丁位置 &#xff1a; 地址 http://pan.ezdial.cn/nasone/a 备用&#xff1a;https://bak.ezdial.cn:8000/bakone/a 因什么值得买&#xff0c;在反复审核本文&…

如何在 AlmaLinux 8 上安装和使用 Docker

Docker 是面向开发人员和系统管理员的强大平台&#xff0c;可简化在软件容器内部署应用程序的过程。 容器允许您将应用程序及其所有部分(代码、运行时、系统工具、系统库——通常位于 /usr/bin 或 /usr/lib 中的任何内容)打包&#xff0c;以便它可以在任何 Linux 机器上一致地运…

Linux性能参数调优

内核的shmall和shmmax参数 SHMMAX配置了最大的内存segment的大小&#xff1a;这个设置的比SGA_MAX_SIZE大比较好。 SHMMIN最小的内存segment的大小 SHMMNI整个系统的内存segment的总个数 SHMSEG每个进程可以使用的内存segment的最大个数 配置信号灯&#xff08; semphore …