pat1032Sharing (25)

来源:互联网 发布:电视控软件 编辑:程序博客网 时间:2024/06/05 06:41

题意分析:

(1)找出两个单词公共后缀的起始地址,单词以字符链表的形式存储起来,因为地址是5位整数,并且地址上的前驱后继关系唯一,因此开辟一个数组,其下标用来表示地址。因为题目给出的字母顺序是乱的,最好先用map存储链接关系。这样遍历效率会更高。遍历地址,并置数组相应的位置为1,当便利第二个单词的时候,当访问到此地址已经标记为1,则为公共后缀的开始位置。

可能坑点:

#include <iostream>#include <stdio.h>#include <map>using namespace std;int address[100000]={0};map<int,int>mp;int main(){    int word1,word2,N;    scanf("%d %d %d",&word1,&word2,&N);    int start,end;    char key;    int i=0;    while(i<N)    {        scanf("%d %c %d",&start,&key,&end);        mp[start]=end;        i++;    }    while(word1!=-1)    {        address[word1]=1;        word1=mp[word1];    }    while(word2!=-1)    {        if(address[word2]==1)        {            printf("%05d\n",word2);            return 0;        }        word2=mp[word2];    }    cout<<-1<<endl;    return 0;}


0 0
原创粉丝点击