加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【PAT甲级】1032 Sharing (25 分)

发布时间:2020-12-16 01:23:36 所属栏目:百科 来源:网络整理
导读:题意: 输入两个单词的起始地址和一个正整数N(=1e5),然后输入N行数据,每行包括一个五位数的字母地址,字母和下一个字母的地址。输出这两个单词的公共后缀首字母的地址,若无公共后缀则输出-1。 代码: #define HAVE_STRUCT_TIMESPEC #includebits/stdc++

题意:

输入两个单词的起始地址和一个正整数N(<=1e5),然后输入N行数据,每行包括一个五位数的字母地址,字母和下一个字母的地址。输出这两个单词的公共后缀首字母的地址,若无公共后缀则输出-1。

代码:

#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
string a1,a2;
int n;
string s,nex;
char x;
map<string,string>mp;
map<string,int>m;
int main(){
cin>>a1>>a2>>n;
for(int i=1;i<=n;++i){
cin>>s>>x>>nex;
mp[s]=nex;
}
int cnt=0;
while(++cnt){
if(cnt&1&&a1.size()==5){
++m[a1];
if(m[a1]==2){
cout<<a1;
return 0;
}
a1=mp[a1];
}
else if(!(cnt&1)&&a2.size()==5){
++m[a2];
if(m[a2]==2){
cout<<a2;
return 0;
}
a2=mp[a2];
}
if(a1.size()==2&&a2.size()==2){//不要使用a1.size()==a2.size()==2,尽管有些许样例可能如愿输出,实际上和想要的效果相差甚远,这样写先将a1的size和a2的size比较,相等即为1,不相等即为0,永远不会等于2

cout<<-1;
break;
}
}
return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读