【发布时间】:2019-01-26 23:50:57
【问题描述】:
我试图从this competition 解决问题 D(阅读任务并不重要),我注意到这两个相同的代码在执行时间上略有不同:
map < string, vector <string> > G;
// Version 1
bool dfs(string s, string t) {
if( s == t ) return true;
for(int i = 0; i < int(G[s].size()); i++) {
if( dfs( G[s][i], t ) ) return true;
}
return false;
}
// Version 2
bool dfs(string s, string t) {
if( s == t ) return true;
for(auto r: G[s]) {
if( dfs( r, t ) ) return true;
}
return false;
}
特别是版本 1 在评估中获得 TLE,而不是版本 2 通过没有任何问题。根据this question,奇怪的是版本 1 更慢,并且在我的 PC 上使用最大的测试用例进行测试我得到了相同的执行时间......你能帮我吗?
【问题讨论】:
-
版本 1 每次迭代执行两次查找
G[s]。版本 2 总共只执行一次。
标签: c++11 dictionary vector iteration