啊
你输出换行呢((
Hack:
```
20 20 20
-1 -1 -1
```
正确的输出:
```
1048576
```
您的程序的输出:
```
0
```
不知道是哪里爆掉了,您自己调调吧
by Echidna @ 2021-07-21 15:19:13
@[某学oi的蒟蒻](/user/82284)
**orz 回滚代码的时候把换行弄掉了(**
我在洛谷IDE上测试是没问题的,实在是离奇到家了。
感谢你耐心答复(;T⌒T)
![](https://cdn.luogu.com.cn/upload/image_hosting/d1vw2al2.png)
by omemi @ 2021-07-21 15:28:08
问题出现在
```cpp
if(a>20 || b>20 || c>20)
return m[nd(20,20,20)]=dfs(20,20,20);
```
我提交了C++11,但在洛谷IDE和本地都用的是C++17,因此得到了不一样的结果。
结果不一样的原因是在C++11没有规定
```cpp
m[nd(20,20,20)]=dfs(20,20,20);
```
这样的语句先计算等号左边还是先计算等号右边,全凭编译器自己安排。于是g++先计算了
```cpp
m[nd(20,20,20)]
```
于是相当于
```cpp
m.emplace(nd(20, 20, 20), 0)
```
然后再计算右值,这时候执行 dfs,就会被count到,然后返回0,导致结果错误。
感谢 **Echidna** 佬指出错误数据,事实上问题就出在这,但是一年前的我没有注意到。
防止打扰就不at了,祝佬题题ac。
本帖终结。
by omemi @ 2022-10-27 22:30:15