Re: 以人为中心必然得出错误的结论 (转载)# Joke - 肚皮舞运动
B*t
1 楼
题目:找dict中最长的单词,这个单词必须由dict里的单词组成。
bool myfunc(string s1, string s2)
{
return (s1.size() > s2.size());
}
bool findLongestWord_helper(string &s, map &hm)
{
for(int i = 1; i <= s.size(); i++)
{
string sub_f(s, 0, i);
if(hm[sub_f])
{
if(i == s.size())
return true;
string sub_b(s, i, s.size()-i);
if(findLongestWord_helper(sub_b, hm))
return true;
}
}
return false;
}
string findLongestWord(vector &vs)
{
string result("");
sort(vs.begin(), vs.end(), myfunc);
map hashmap;
for(int i = 0; i < vs.size(); i++)
hashmap[vs[i]] = true;
for(int i = 0; i < vs.size(); i++)
{
hashmap[vs[i]] = false;//加上这句就好了
if(findLongestWord_helper(vs[i], hashmap))
{
result = vs[i];
break;
}
}
return result;
}
bool myfunc(string s1, string s2)
{
return (s1.size() > s2.size());
}
bool findLongestWord_helper(string &s, map
{
for(int i = 1; i <= s.size(); i++)
{
string sub_f(s, 0, i);
if(hm[sub_f])
{
if(i == s.size())
return true;
string sub_b(s, i, s.size()-i);
if(findLongestWord_helper(sub_b, hm))
return true;
}
}
return false;
}
string findLongestWord(vector
{
string result("");
sort(vs.begin(), vs.end(), myfunc);
map
for(int i = 0; i < vs.size(); i++)
hashmap[vs[i]] = true;
for(int i = 0; i < vs.size(); i++)
{
hashmap[vs[i]] = false;//加上这句就好了
if(findLongestWord_helper(vs[i], hashmap))
{
result = vs[i];
break;
}
}
return result;
}