• 九度OJ1468


    这道题其实就是个很简单的静态链表,需要注意的是,地址一共有5位,最后输出的时候如果之前是使用int类型存储地址的话,一定要强制规定输出的位数(5位),否则有可能会将高位省略。(如地址00001输出为1)

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include<string>
    #include<iostream>
    using namespace std;
    int next[100001];
    char letter[100001];
    char str1[200001],str2[200001];
    int add1[200001],add2[200001];
    void caladd(string s,int&add)
    {
        if(s=="NULL")
            add=-1;
        else if(s=="-1")
            add=-1;
        else
            add=(s[0]-'0')*10000+(s[1]-'0')*1000+(s[2]-'0')*100+(s[3]-'0')*10+(s[4]-'0');
    }
    int main()
    {
        int start1,start2,n,i,j,top1,top2;
        string s1,s2;
        while(cin>>s1>>s2>>n)
        {
            start1=0;
            start2=0;
            memset(next,-1,sizeof(next));
            memset(letter,0,sizeof(letter));
            caladd(s1,start1);
            caladd(s2,start2);
            if(start1==-1||start2==-1)
            {
                printf("-1
    ");
                continue;
            }
            for(i=1;i<=n;i++)
            {
                char c;
                string a1,b1;
                int a,b;
                cin>>a1>>c>>b1;
                caladd(a1,a);
                caladd(b1,b);
                next[a]=b;
                letter[a]=c;
            }
            i=start1;
            top1=0;top2=0;
            while(i!=-1)
            {
                add1[top1]=i;
                str1[top1++]=letter[i];
                i=next[i];
            }
            str1[top1]=0;
            i=start2;
            while(i!=-1)
            {
                add2[top2]=i;
                str2[top2++]=letter[i];
                i=next[i];
            }
            str2[top2]=0;
            int l1=top1-1,l2=top2-1;
            while(str1[l1]==str2[l2]&&l1>0&&l2>0)
            {
                l1--;l2--;
            }
            if(l1==top1-1)
            printf("-1
    ");
            else
            printf("%05d
    ",add1[l1+1]);//这个地方非常重要,留此以为警戒
        }
        return 0;
    }
    

      

  • 相关阅读:
    build.gradle文件详解<转> 推荐
    openGL 环境配置
    手写 大整数
    FOJ有奖月赛-2016年8月(daxia专场之过四题方有奖)
    2.1 基本计数方法
    第7章 代码
    第7章 高级数据结构的编程实验
    3.3 字符串(1)
    2016_NENU_CS_3
    3.2 区间信息的维护与查询
  • 原文地址:https://www.cnblogs.com/wickedpriest/p/3955776.html
Copyright © 2020-2023  润新知