Central Europe Regional Contest 2012 Problem c: Chemist’s vows

字符串处理的题目;

学习了一下string类的一些用法;

这个代码花的时间很长,其实可以更加优化;

代码:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 string dict[114]= {"he","h","li","be","b","c","n","o","f","ne"
 5                    ,"na","mg","al","si","p","s","cl","ar","k","ca"
 6                    ,"sc","ti","v","cr","mn","fe","co","ni","cu","zn"
 7                    ,"ga","ge","as","se","br","kr","rb","sr","y","zr"
 8                    ,"nb","mo","tc","ru","rh","pd","ag","cd","in","sn"
 9                    ,"sb","te","i","xe","cs","ba","hf","ta","w","re"
10                    ,"os","ir","pt","au","hg","tl","pb","bi","po","at"
11                    ,"rn","fr","ra","rf","db","sg","bh","hs","mt","ds"
12                    ,"rg","cn","fl","lv","la","ce","pr","nd","pm","sm"
13                    ,"eu","gd","tb","dy","ho","er","tm","yb","lu","ac"
14                    ,"th","pa","u","np","pu","am","cm","bk","cf","es"
15                    ,"fm","md","no","lr"
16                   };
17 
18 bool go(string &s,int k)
19 {
20     if(k==s.length())
21         return true;
22     for(int i=0; i<114; i++)
23         if(s.substr(k,dict[i].length())==dict[i] && go(s,k+dict[i].length()))
24             return true;
25     return false;
26 }
27 
28 int main()
29 {
30     int tt;
31     cin>>tt;
32     string s;
33     while(tt--)
34     {
35         cin>>s;
36         cout<<(go(s,0)?"YES":"NO")<<endl;
37     }
38     return 0;
39 }
View Code

 

posted @ 2013-10-03 19:18  Yours1103  阅读(316)  评论(0编辑  收藏  举报