想起来个我之前遇到的灵异事件。
简单的记忆化搜索:cout<<dfs(x)<<" "<<f[x]; 其中 f 是记忆化数组。
cout<<dfs(x)<<" "<<f[x];
然后诡异的事情发生了,第一个输出了正确的值,但是第二个却还是初始值,完全没变,关键是代码中 dfs 的返回值都会赋值给 f 。我还断点看了一下 f 里的内容,并没有问题,但和输出的不一样。
然后我改了一下:dfs(x); cout<<f[x]; 结果这次输出对了。
dfs(x); cout<<f[x];
大概是双线程的什么东西?可网上我也没找到关于 cout 并行计算的鬼... 大佬教教我呗(