PAT 1046 Sharing (25)(不同长度字符串交点)

原创 2016年08月29日 16:35:33

题目

1032. Sharing (25)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
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

where Address 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.长的那个减掉长的个数,然后在比较,找到地址相同了的即可。

代码

#include<iostream>
#include<cstdio>

using namespace std;
char value[99999];
int next1[99999];
int main(){
    int f,s,n;
    scanf("%d %d %d",&f,&s,&n);
    int where,to;char a;
    for (int i= 0; i < n; ++i) {
        scanf("%d %c %d",&where,&a,&to);
        value[where] = a;
        next1[where] = to;
    }
    int la = 0,lb = 0;
    int now = f;
    while (now != -1) {
        la++;
        now = next1[now];
    }
    now = s;
    while (now != -1) {
        lb++;
        now =next1[now];
    }
   // cout << la << lb;
    int nowa = f;
    int nowb =s;
    if (la>lb) {
        int d = la - lb;
        while (d--) {
            nowa = next1[nowa];
        }
    }else {
        int d = lb - la;
        while (d--) {
            nowb =next1[nowb];
        }
    }

    while (nowa !=nowb) {
        nowa = next1[nowa];
        nowb = next1[nowb];
    }
    if (nowa == -1) {
        printf("%d\n",-1);
    }else {
        printf("%05d\n",nowa);
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

PAT 1032. Sharing (25)(求俩个字符串的交点)

官网1032. Sharing (25)时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue To...
  • qq_16949707
  • qq_16949707
  • 2016年09月08日 09:04
  • 81

【PAT1032】Sharing 找两单词链表的相同后缀

1032. Sharing (25) 时间限制 100 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 C...
  • tiantangrenjian
  • tiantangrenjian
  • 2014年02月12日 11:25
  • 1681

1040. 有几个PAT(25)

题目链接:http://www.patest.cn/contests/pat-b-practise/1040 1040. 有几个PAT(25) 时间限制 120 ...
  • ice_camel
  • ice_camel
  • 2015年03月14日 21:14
  • 2597

7-07. PAT排名汇总(25) (结构体 ZJU_PAT)

7-07. PAT排名汇总(25) (结构体 ZJU_PAT)
  • u012860063
  • u012860063
  • 2014年11月20日 20:10
  • 1912

1035. 插入与归并(25)-浙大PAT乙级真题

1035. 插入与归并(25) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭...
  • liuchuo
  • liuchuo
  • 2016年07月22日 14:43
  • 704

PAT 1003. Emergency (25) (求两点间最短路的条数)

1003. Emergency (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 ...
  • IAccepted
  • IAccepted
  • 2014年03月18日 12:19
  • 7802

5-6 PAT排名汇总 (25分)

5-6 PAT排名汇总   (25分) 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计...
  • qq_36525906
  • qq_36525906
  • 2017年02月23日 14:48
  • 843

PAT 1025 反转链表 (25) 解题报告

1025. 反转链表 (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判...
  • qq_21899803
  • qq_21899803
  • 2016年03月15日 19:32
  • 443

PAT (Advanced Level) 1032. Sharing (25) 求链表第一个交点,测试用例不保证有交点

To store English words, one method is to use linked lists and store a word letter by letter. To save...
  • tuzigg123
  • tuzigg123
  • 2015年07月23日 20:59
  • 459

php 中字符串一样但长度不等的问题

问题: 如图所示 咋眼看去两个一样的中文字符串“后勤保障部”,但一个长度为21 一个为15。 首先直觉可能会认为是编码方式不一样导致的, 通过mb_detect_encoding()函数查看...
  • summerxiachen
  • summerxiachen
  • 2017年11月19日 16:21
  • 435
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PAT 1046 Sharing (25)(不同长度字符串交点)
举报原因:
原因补充:

(最多只允许输入30个字)