HDU 1075 What Are You Talking About
2016-05-06 13:01
323 查看
一道题卡了好久,连续RE了十几次,改了很多无意义的“问题”,后来才知道原来只是一个小小的细节错误,不过话说回来,谁会做“我什么都没说,但还要你翻译”这种事情呢?
这个细节害我卡了好久。。。以后一定要注意每一个可能会出现的细节!!!
#include<iostream> #include<algorithm> #include<string> #include<cstring> #define xh(a,b,c)for(int a=b;a<=c;a++) #define dxh(a,b,c)for(int a=b;a>=c;a--) using namespace std; struct trie{ int e; string s; trie *n[30]; trie(){ e=0; memset(n,0,sizeof(n)); } }; trie *h,*p,*q; string s1,s2,e; void ins(string a,string b){ p=h; xh(i,0,b.length()-1){ if(p->n[b[i]-'a']==NULL){ q=new trie; p->n[b[i]-'a']=q; } p=p->n[b[i]-'a']; } p->e=1; p->s=a; } void cz(string str){ if(str==""){//从这行开始的连续三行是问题所在 cout<<str;return; } p=h; xh(i,0,str.length()-1){ p=p->n[str[i]-'a']; if(p==0){ cout<<str;return;} } if(p->e)cout<<p->s; else cout<<str; } void xg(string s){ string s2,s3; if(s==""){ cout<<endl; return ; } xh(i,0,s.length()-1){ s2=""; while(s[i]>='a'&&s[i]<='z')s2+=s[i++]; cz(s2); cout<<s[i]; } cout<<endl; } int main(){ cin>>s1; e="END"; h=new trie; while(cin>>s1&&s1!=e){ cin>>s2; ins(s1,s2); } getline(cin,s1); getline(cin,s1); while(1){ getline(cin,s1); if(s1==e)return 0; xg(s1); } return 0; }
这个细节害我卡了好久。。。以后一定要注意每一个可能会出现的细节!!!
相关文章推荐
- MongoDB引子 -- 主从复制,自动灾备,故障转移
- Windows7配置Java环境变量
- BootStrap制作导航条实例代码
- Swift 基本语法详解(2)
- PAT-B 1032. 挖掘机技术哪家强
- 准备工作Canopy安装Day1
- 深入理解GBDT
- uWSGI 配置指令介绍
- 怎么解决svn清理失败且路径显示乱码问题
- nyoj645
- Okhttp使用
- 华为交换机基础配置(一)
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
- Java 多线程
- gradle 学习系列教程3-Helloworld
- gradle 学习系列教程3-Helloworld
- C#中日期记忆日期的格式化,日期格式化说明
- php 之 数据访问 查询关键字 (0506)
- Android 你应该知道的学习资源 进阶之路贵在坚持
- 【CODEVS 1230】元素查找 哈希表