首页 > 其他 > 详细

【PAT甲级】1032 Sharing (25 分)

时间:2019-09-12 00:34:26      阅读:120      评论:0      收藏:0      [点我收藏+]

题意:

输入两个单词的起始地址和一个正整数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;
}

【PAT甲级】1032 Sharing (25 分)

原文:https://www.cnblogs.com/ldudxy/p/11509517.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!